2012-10-23 85 views
0

對於每個地區顯示人口至少有1000萬的國家的地區和數量。如何返回請求的結果?

的表稱爲英國廣播公司和具有以下字段:

  • 名(指的是國家的名字)
  • 區域(指世界的區域)
  • 區域(區域英里)
  • 人口(有多少人民說國家有)
  • GDP(國內生產總值)

我想我可以做這樣的事情:

SELECT region, COUNT(name) FROM bbc 
GROUP BY region 
HAVING population > 10000000 
+0

什麼是你長了錯誤 – SRIRAM

+0

'總和(人口)' –

+0

或'WHERE人口> 1e7',這取決於你想要什麼。 –

回答

2

如果你想顯示所有區域,並在每個地區來計算人口超過1000萬的人數,那麼這可能是最簡單的:

SELECT region, SUM(CASE WHEN population > 10000000 THEN 1 ELSE 0 END) as BigCountries 
FROM bbc 
GROUP BY region 

所以,如果你在沒有國家有人口超過1000萬更大的區域,你仍然必須與區域名稱的行和0


從您的意見@ Yograj古普塔的問題 - 如果你想去的地方所有國家都有人口>千萬的區域,那麼你可以修改上面:

SELECT region, COUNT(*) as Cnt,SUM(CASE WHEN population > 10000000 THEN 1 ELSE 0 END) as BigCountries 
FROM bbc 
GROUP BY region 
HAVING COUNT(*) = SUM(CASE WHEN population > 10000000 THEN 1 ELSE 0 END) 

或者只是利用一個簡單的[R屬性:

SELECT region, COUNT(*) as Cnt,MIN(population) as LowestPop 
FROM bbc 
GROUP BY region 
HAVING MIN(population) > 10000000 

凡在該地區的任何國家的最低人口> 10000000那麼所有國家都必須有一個人口>千萬

+0

所有關於你的答案都是有道理的。然而,解決方案不起作用。也許你可以看看sqlzoo.net/SUM_and_COUNT 這是問題7。:( – MonuMan5

+0

Woot。> =解決了它。謝謝你的幫助! – MonuMan5

1

您應該使用

-- For getting count of country name which has population > 10000000 
SELECT region, COUNT(name) FROM bbc 
WHERE population > 10000000 
GROUP BY region 

-- For getting region which has SUM(population) > 10000000 
SELECT region, COUNT(name) FROM bbc 
GROUP BY region 
HAVING SUM(population) > 10000000 
+0

我相信我被問到的問題是尋找在該地區所有國家都有人口超過10000000的所有地區 – MonuMan5

+0

爲了進一步澄清...我不是在尋找人口總和大於10的地區而是每個國家人口超過1000萬的地區。 – MonuMan5

+0

出於某種原因,他們的答案給了中東的計數10 ...您的查詢返回9 ...不知道爲什麼有差異。 – MonuMan5

相關問題