SQL问题与拥有
我正在努力解决这个问题 返回一个列出语言和讲者数量的表,但只包括讲者人数>20000000的语言?根据发言者的数量将这些结果从高到低排序 这是我的代码:SQL问题与拥有,sql,Sql,我正在努力解决这个问题 返回一个列出语言和讲者数量的表,但只包括讲者人数>20000000的语言?根据发言者的数量将这些结果从高到低排序 这是我的代码: SELECT Language, Percentage / 100 AS 'Percentage', SUM(Population) AS Population, Population * Percentage AS 'Speakers' FROM language GROUP BY Lan
SELECT
Language,
Percentage / 100 AS 'Percentage',
SUM(Population) AS Population,
Population * Percentage AS 'Speakers'
FROM
language
GROUP BY
Language
HAVING
Speakers > 200000000;
有人能帮我吗?你可以在下面使用演讲者的计算表达式来尝试
SELECT
Language,
Percentage/100 AS 'Percentage',
SUM(Population) AS Population,
SUM(Population)*(Percentage/100) AS 'Speakers'
FROM language
GROUP BY Language
HAVING SUM(Population)*(Percentage/100)> 200000000
ORDER BY SUM(Population)*(Percentage/100) DESC
不要对列别名使用单引号。那真是个坏习惯。仅对字符串和日期常量使用单引号 SQL(一般情况下)允许您按的顺序引用列别名。有些数据库也允许您在
HAVING
子句中引用它们,但不是全部
我不确定百分比应该做什么。它应该在组中。在其他情况下,百分比
应作为聚合计算的一部分:
SELECT Language,
SUM(Percentage * Population / 100) / SUM(Population) AS Percentage,
SUM(Population) AS Population,
SUM(Population * Percentage/100) AS Speakers
FROM language
GROUP BY Language
HAVING SUM(Population*Percentage/100.0) > 200000000
ORDER BY Speakers DESC;
请注意,有些数据库进行整数除法,因此99/100=0,而不是0.99。因此,我会:
SELECT Language,
SUM(Percentage * Population / 100.0) / SUM(Population) AS Percentage,
SUM(Population) AS Population,
SUM(Population*Percentage/100.0) AS Speakers
FROM language
GROUP BY Language
HAVING SUM(Population*Percentage/100.0) > 200000000
ORDER BY Speakers DESC;