http://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial
網頁內第8題,順便問一下這題,資料表格在網頁內
限定用nested SELECT回答
問Some countries have populations more than three times that of any of their neighbours (in the same continent). Give the countries and continents.
各大陸中,某些國家有著比位於該大陸內的其他任何國家多3倍以上的人口,
試問是那些國家及其大陸?
我的解題邏輯是
1. 該國家一定是該大陸最多人口的國家
2. 該大陸中沒有一個國家(除了該國)的人口比該國的1/3人口多
3. 找出符合步驟2.條件的大陸
4. 找出步驟3.的大陸中的最多人口的國家
我的解法是
代碼:
--條件: 1) 該大陸中,人口超過該大陸最多人口1/3的國家數只有1個,的大陸
-- 2) 該國家人口=該大陸最多MAX人口的國家
--找出國家名稱及其所在大陸
SELECT w3.name, w3.continent
FROM (
--找出各大陸中人口超過該大陸最多人口的1/3的國家數
--(各大陸名稱,超過該大陸MAX人口之1/3的國家數,MAX人口)
SELECT continent, COUNT(*) AS cnt, max_popu
FROM (
--找出各大陸最多人口(各大陸名稱,MAX人口)
SELECT continent, MAX(population) 'max_popu'
FROM world
GROUP BY continent
)
AS w2, world w
WHERE (w.continent=w2.continent) AND
(w.population>ROUND(w2.max_popu/3))
GROUP BY w.continent
)
AS cntEachCtnt, world w3
WHERE (cntEachCtnt.cnt=1) AND
(w3.population=cntEachCtnt.max_popu);
不知道有沒有人有更漂亮的解法?