Ini adalah masalah "terbesar-n-per-grup" yang sering muncul di 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;
Penjelasan:gabung cari negara c2
yang memiliki benua yang sama dan populasi yang lebih besar. Jika Anda tidak dapat menemukannya (yang ditunjukkan oleh gabungan luar yang mengembalikan NULL untuk semua kolom c2
) lalu c1
harus menjadi negara dengan populasi tertinggi di benua itu.
Perhatikan bahwa ini dapat menemukan lebih dari satu negara per benua, jika ada seri untuk posisi #1. Dengan kata lain, mungkin ada dua negara yang tidak memiliki negara ketiga dengan populasi yang lebih besar.