Il s'agit du problème "plus grand-n-par-groupe" qui revient fréquemment sur 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;
Explication :faire une jointure en recherchant un pays c2
qui a le même continent et une plus grande population. Si vous n'en trouvez pas (ce qui est indiqué par la jointure externe renvoyant NULL pour toutes les colonnes de c2
) puis c1
doit être le pays le plus peuplé de ce continent.
Notez que cela peut trouver plus d'un pays par continent, s'il y a égalité pour la position #1. En d'autres termes, il pourrait y avoir deux pays pour lesquels aucun pays tiers n'existe avec une plus grande population.