SQL:根据ID和2个(或更多)不同的表计算总和

时间:2017-08-01 14:33:09

标签: sql join sum

我认为一个例子胜过千言万语。

表:CONTINENTS:

id | continent
---+----------
 1 | Africa
 2 | America
 3 | Asia
 4 | Europe
 5 | Oceania

表:国家

id | countries      | population | continent_id
---+----------------+------------+-------------
 1 | Australia      |   24500000 | 5
 2 | Brazil         |  209300000 | 2
 3 | Canada         |   36600000 | 2
 4 | France         |   65000000 | 4
 5 | Germany        |   82100000 | 4
 6 | Italy          |   59400000 | 4
 7 | Japan          |  127500000 | 3
 8 | South Africa   |   56700000 | 1
 9 | South Korea    |   51000000 | 3
10 | United Kingdom |   66200000 | 4
11 | United States  |  324500000 | 2

结果我想:

id | continent | continent_population
---+-----------+---------------------
 1 | Africa    |             56700000
 2 | America   |            570400000
 3 | Asia      |            178500000
 4 | Europe    |            272700000
 5 | Oceania   |             24500000

所以,是的,我希望每个大陆的人口都是国家总和的结果,这些国家在另一个表格中。我尝试了很多查询,但没有任何效果。

此外,这个标题可能很糟糕,但我不确定如何说出来。

1 个答案:

答案 0 :(得分:0)

试试这个,将两个表continent_id加入id,然后汇总人口,并按大陆分组:

SELECT
CONTINENTS.id,
CONTINENTS.continent,
SUM(COUNTRIES.population) as continent_population
FROM CONTINENTS
LEFT JOIN COUNTRIES ON COUNTRIES.continent_id=CONTINENTS.id
GROUP BY CONTINENTS.id, CONTINENTS.continent