0

地域ごとに、人口が 1,000 万人以上の地域と国の数を示します。

このテーブルは bbc と呼ばれ、次のフィールドがあります。

  • 名前(国の名前を指します)
  • region (世界の地域を指します)
  • 面積(マイル単位の面積)
  • 人口(その国が何人の人々を持っているか)
  • gdp (国内総生産)

私は次のようなことができると思っていました:

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

2 に答える 2

2

すべての地域を表示し、各地域内で人口が 1,000 万人を超える数を数えたい場合は、おそらくこれが最も簡単です。

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

したがって、人口が 10000000 を超える国がない地域がある場合でも、その地域名と 0 を含む行が残ります。


コメントから @Yograj Gupta の質問へ -すべての国の人口が 10000000 を超える地域が必要な場合は、上記を変更できます。

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)

または、より単純なプロパティを利用するだけです:

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

地域内のいずれかの国の最小人口が > 10000000 である場合、すべての国は人口が > 10000000 でなければなりません

于 2012-10-23T06:33:58.103 に答える
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
于 2012-10-23T06:31:06.730 に答える