Я также проходил через эти небольшие проблемы в SQLZOO, и эти два конкретных вопроса я нашел хитрыми.
В некоторых странах численность населения более чем в три раза превышает
их соседи (на том же континенте). Дайте странам и
материки.
Моя первая попытка была:
SELECT name, continent
FROM world x
WHERE population > ALL (SELECT population*3
FROM world y
WHERE x.continent = y.continent)
Что показалось мне логичным. До тех пор, пока я не осознал, что, если бы я проверял каждую популяцию по отношению к любой другой популяции на континенте, включая , включая самого себя , я бы никогда не получил никаких результатов, поскольку численность населения страны никогда не будет больше, чем она сама три. Поэтому вам нужно проверить любую другую страну, за исключением страны, с которой вы проверяете.
В таблице также есть две страны с населением NULL, поэтому вы также должны исключить их, чтобы удовлетворить вопрос.
SELECT name, continent
FROM world x
WHERE population > ALL (SELECT population*3
FROM world y
WHERE x.continent = y.continent
AND x.name <> y.name)
AND population > 0