我不确定如何为此编写SQL查询。
这是桌子:
ZIP;NUMBER
01800;456
02850;445
75001;123
75002;456
75003;789
我需要1.将ZIP开头为“ 75”的所有行的NUMBER列相加,并2.计算这些行在SUM(NUMBER)上所占的百分比。
类似的东西:
select SUM(NUMBER) from MYTABLE WHERE ZIP LIKE "75%" AS 75ZIP;
select (75ZIP/SUM(NUMBER)*100) from MYTABLE;
我应该使用GROUP BY HAVING,子查询还是其他完全使用的东西?
谢谢。
答案 0 :(得分:2)
有条件聚合:
select
100.0 * sum(case when zip like '75%' then number else 0 end) / sum(number)
from tablename
答案 1 :(得分:0)
作为将来的参考,作为替代方案,即将发布的3.30版本支持过滤聚合函数,例如已经可以使用窗口函数完成的操作:
SELECT 100.0 * sum(number) FILTER (WHERE zip LIKE '75%') / sum(number)
FROM mytable;