Это проблема "наибольший по количеству групп", которая часто возникает в 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;
Объяснение: выполните объединение в поисках страны c2
с таким же континентом и большим населением. Если вы не можете найти его (что обозначено внешним объединением, возвращающим NULL для всех столбцов c2
), тогда c1
должна быть страной с наибольшим населением на этом континенте.
Обратите внимание, что это может найти более одной страны на континенте, если есть связь для позиции № 1. Другими словами, может быть две страны, для которых не существует третьей страны с большим населением.