2017-10-28 2 views
0

Also im Grunde habe ich zwei Tabellen, eine namens CountryLanguage und die andere namens Country.MySQL Workbench, möchte den maximalen Prozentsatz einer Spalte nach der Gruppierung und die entsprechenden Informationen in anderen Spalten finden

Click here to view Image

I al ot verschiedene Dinge ausprobiert habe, aber ich kann keine Antwort auf mein Problem zu bekommen scheinen:

Beide Tabellen über einen Ländercode, der die Tabellen zu verknüpfen verwendet wird, und Jedes Land hat seinen Namen. Dies ist das Bild für das Land Tabelle:

This is the image for the Country Table

Die CountryLanguage Tabelle hat eine Reihe von Sprachen in jeder Spalte ein Ländercode und ein Prozentsatz von Menschen, die die Sprache sprechen:

Image for the COuntryLanguage Table

Was ich im Grunde (Stunden und Stunden) versucht habe, war die geläufigste Sprache, die in jedem Land gesprochen wird (einfach indem man den Höchstprozentsatz jeder der gesprochenen Sprachen in diesem Land findet und dann diesen Wert verknüpft) zur Landessprache). Die Syntax verursacht mir viele Probleme, weil ich relativ neu in MySQL bin.

Jede Hilfe würde sehr geschätzt werden. : D

SELECT CL.Percentage, C.Name, CL.Language 
From world169.CountryLanguage as CL join 
world169.Country as C ON (CL.CountryCode = C.Code) 

EDIT: Danke für die Antwort Jinesh. Es gibt ein anderes kleines Problem (das ich vorher hatte). Ich zeige Ihnen ein Vorher-Nachher-Bild von dem, was passiert, wenn ich den Code ausführe: Before: Es zeigt den Prozentsatz für jede gesprochene Sprache an. Wenn Sie also das Maximum (Prozentsatz) finden, erwarten Sie 76,7 und die Sprache Englisch, richtig ? Aber stattdessen (Image ***after*** I run your code) erhalten Sie den (richtigen) Prozentsatz und die falsche Sprache (Dies ist ein anderes Problem, das ich immer wieder und wieder begegnet bin.)

Wie bekomme ich Englisch statt Niederländisch aufgeführt werden? (BTW danke für die Hilfe, es war wirklich nützlich)

+0

Sie können versuchen, By-Klausel Max() Funktion mit einer Gruppe zu verwenden. Etwas wie SELECT MAX (CL.Percentage), C.Name, CL.Language Aus world169.CountryLanguage als CL Join world169.Country als C ON CL.CountryCode = C.Code-Gruppe von (CL.CountryCode) ' –

+0

Vielen Dank Sie so sehr für die Antwort JINESH, ich habe jedoch ein kleines Problem. Wenn Sie es lesen möchten, ist es in der EDIT-Teil über – NecklessGiraffe

+0

Sie sollten wirklich den SQL-Text anstelle von großen Screenshots, die eine Menge von nicht verwandten Dingen enthalten. –

Antwort

0

Können wir so etwas wie dies versuchen:

SELECT 
    CL.Percentage, 
    (Select C.Name from world169.Country as C where CL.CountryCode = C.Code), 
    CL.Language 
FROM world169.CountryLanguage as CL 
WHERE BALANCE = (SELECT MAX(CL2.Percentage) FROM world169.CountryLanguage as CL2 WHERE CL2.CountryCode = CL.CountryCode) 
Verwandte Themen