To jest "największy problem na grupę", który często pojawia się na 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;
Wyjaśnienie:wykonaj sprzężenie w poszukiwaniu kraju c2
który ma ten sam kontynent i większą populację. Jeśli nie możesz go znaleźć (co jest wskazywane przez sprzężenie zewnętrzne zwracające NULL dla wszystkich kolumn c2
) następnie c1
musi być krajem o największej liczbie ludności na tym kontynencie.
Zauważ, że może to znaleźć więcej niż jeden kraj na kontynent, jeśli jest remis na pierwszej pozycji. Innymi słowy, mogą istnieć dwa kraje, dla których nie istnieje kraj trzeci z większą liczbą ludności.