Toto je problém „největšího počtu na skupinu“, který se na StackOverflow často vyskytuje.
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;
Vysvětlení:proveďte spojení a vyhledejte zemi c2
která má stejný kontinent a větší počet obyvatel. Pokud žádný nemůžete najít (což je indikováno tím, že vnější spojení vrací NULL pro všechny sloupce c2
) a poté c1
musí být zemí s nejvyšším počtem obyvatel na tomto kontinentu.
Všimněte si, že toto může najít více než jednu zemi na kontinentu, pokud existuje nerozhodný výsledek pro pozici #1. Jinými slovy, mohly by existovat dvě země, pro které neexistuje žádná třetí země s větším počtem obyvatel.