Dies ist das „größte-n-pro-Gruppe“-Problem, das häufig bei StackOverflow auftritt.
SELECT c1.Continent, c1.Name
FROM Country c1
LEFT OUTER JOIN Country c2
ON (c1.continent = c2.continent AND c1.Population < c2.Population)
WHERE c2.continent IS NULL;
Erläuterung:Führen Sie einen Join durch und suchen Sie nach einem Land c2
das denselben Kontinent und eine größere Bevölkerung hat. Wenn Sie keinen finden können (was durch den äußeren Join angezeigt wird, der NULL für alle Spalten von c2
zurückgibt ) dann c1
muss das Land mit der höchsten Bevölkerung auf diesem Kontinent sein.
Beachten Sie, dass dies mehr als ein Land pro Kontinent finden kann, wenn es einen Gleichstand für die Position Nr. 1 gibt. Mit anderen Worten, es könnte zwei Länder geben, für die kein drittes Land mit einer größeren Bevölkerung existiert.