Dit is het "grootste-n-per-groep"-probleem dat vaak voorkomt op StackOverflow.
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;
Uitleg:doe een join op zoek naar een land c2
dat hetzelfde continent en een grotere bevolking heeft. Als u er geen kunt vinden (wat wordt aangegeven door de outer join die NULL retourneert voor alle kolommen van c2
) dan c1
moet het land zijn met de hoogste bevolking op dat continent.
Merk op dat dit meer dan één land per continent kan vinden, als er een gelijkspel is voor de #1 positie. Met andere woorden, er kunnen twee landen zijn waarvoor geen derde land bestaat met een grotere bevolking.