如果我有以下数据集:
pk ind value
1 1 10
2 1 11
3 2 13
我想计算指标1相对于总价值的项目的百分比(值)。因此,在简单的数学中,这将是
(10+11)/(10+11+13)
我显然知道如何仅使用指标1提取值,但我不确定如何在SQL查询中将其除以总数。
答案 0 :(得分:5)
使用case
表达式进行条件聚合:
select sum(case when ind = 1 then value else 0 end) / sum(value)
from tablename
如果表中没有行,将零除错引起。 (非空行,具体而言。)
我不了解Oracle,也许您需要将value
与1.0相乘以避免整数除法,此处始终返回0。即做sum(case when ind = 1 then 1.0 * value else 0 end)
。
答案 1 :(得分:2)
计算每个指标的百分比
SELECT
t.ind,
SUM(t.value) amount,
SUM(t.value)/SUM(SUM(t.value))OVER() percent
FROM Test t
GROUP BY t.ind
SQL小提琴 - http://sqlfiddle.com/#!4/f4249/5