Este es el problema "mayor n-por-grupo" que surge con frecuencia en 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;
Explicación:haz una unión buscando un país c2
que tiene el mismo continente y una mayor población. Si no puede encontrar uno (que se indica mediante la combinación externa que devuelve NULL para todas las columnas de c2
) luego c1
debe ser el país con mayor población de ese continente.
Tenga en cuenta que esto puede encontrar más de un país por continente, si hay un empate en la posición n.º 1. Es decir, podría haber dos países para los que no exista un tercer país con mayor población.