Detta är det "största-n-per-grupp"-problemet som dyker upp ofta på 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;
Förklaring:gör en join och leta efter ett land c2
som har samma kontinent och en större befolkning. Om du inte kan hitta en (vilket indikeras av att den yttre sammanfogningen returnerar NULL för alla kolumner i c2
) sedan c1
måste vara det land med den högsta befolkningen på den kontinenten.
Observera att detta kan hitta mer än ett land per kontinent, om det är oavgjort för #1-positionen. Med andra ord kan det finnas två länder för vilka det inte finns något tredje land med en större befolkning.