在SQL

时间:2016-02-06 21:30:08

标签: sql postgresql

我需要列出说一种语言的人数,到目前为止我已经提出:

SELECT 
  language.name, 
  (country.population * (language.percentage / 100)) 
FROM 
 language, 
 country
ORDER BY name; 

这会返回每种语言和说出来的数字,但是对于每个拥有该语言的人口的国家/地区都会这样做,例如:

"Afghan Persian";1624568.00000000000000000000
"Afghan Persian";5269297.00000000000000000000
"Afghan Persian";1052017.50000000000000000000

我能做些什么才能使每种语言只占一行,并说出世界总人口的总和?

2 个答案:

答案 0 :(得分:1)

您需要使用聚合函数(即sum)和group-by。所以你的查询看起来像:

select language.name , sum((country.population * (language.percentage / 100)))
from language, country
group by language.name
order by name

答案 1 :(得分:0)

首先,您需要加入。一个简单的规则:从不<base path="/" />子句中使用逗号。

然后表别名使查询更容易理解。而且,您需要一个聚合查询。 。 。 FROMGROUP BY

SUM()