Sven Rautenberg: Alternativquery gesucht

Beitrag lesen

Moin!

Danke für die Antwort!

Jetzt frage ich mich aber mal - und damit dich: Was soll das ORDER BY machen? Es sieht hinreichend kompliziert aus, dass es sich nicht von selbst erklärt, und es sieht auch nicht so aus, als würde es irgendeinen Einfluss auf das Ergebnis haben, oder?

Mit ORDER BY ... DESC erreiche ich, dass in meiner Gruppierung nach Länder Eintrag mit dem Land mit meisten Athleten in Zeile 1 steht, sonst würde da zufälliges Land mit entsperchenden Athletenanzahl stehen, oder?

Die Frage war: Aus welchem Land kommen die meisten Athleten.

Dein Query:

SELECT Land  
FROM Athlet  
GROUP BY Land  
ORDER BY COUNT(DISTINCT(Name)) DESC  
LIMIT 1

Du gruppierst nach Land. Also alle Zeilen, bei denen Land gleich ist, in eine Zeile.

Und dann nimmst du das Vorkommen des Athletennamens zum Bestimmen, welches Land vorne sein soll?

Meine schlichte Lösung wäre ja gewesen, SELECT Land, count(Land) ... GROUP BY Land ORDER BY COUNT(Land)

Also, ORDER BY hat keinen Einfluss auf Ergebniss als solche, aber wenn ich danach alle Zeilen außer erster eliminiere - schon.

Richtig. Und weil du dir nicht ausgeben lässt, was in deiner Abfrage sonst noch alles aggregiert und ermittelt wird, kommt am Ende "irgendein" Land raus, und das ist es dann?

Es geht mir aber weniger darum, diese Abfrage zu verifizieren, sondern zu verstehen, wie man die Aggregatfunktionen von Aggregatfunktionen nahmen kann (in meinem Fall MAX(COUNT(Name))).

Dein Query enthält kein MAX(COUNT(Name)).

- Sven Rautenberg