Причина в том, что:
AND population > 0
... отфильтровывает пустую строку для региона "Европа" с именем "Ватикан", что усложняет:
WHERE population >= ALL (SELECT population
FROM ...)
... потому что NULL не является значением, поэтому Россия не будет правильно ранжироваться.Оператор ALL требует, чтобы значение, которое вы сравнивали, было больше или равно ALL значениям, возвращаемым из подзапроса, что никогда не может произойти, если там есть значение NULL.либо:
SELECT region, name, population
FROM bbc x
WHERE population = (SELECT MAX(population)
FROM bbc y
WHERE y.region = x.region)
..., либо с помощью JOIN:
SELECT x.region, x.name, x.population
FROM bbc x
JOIN (SELECT y.region,
MAX(y.population) AS max_pop
FROM bbc y
GROUP BY y.region) z ON z.region = x.region
AND z.max_pop = x.population