如何计算需要where语句的字段

时间:2017-11-22 09:39:40

标签: sql oracle

如果我有以下数据集:

pk ind value
1  1   10
2  1   11
3  2   13

我想计算指标1相对于总价值的项目的百分比(值)。因此,在简单的数学中,这将是

(10+11)/(10+11+13)

我显然知道如何仅使用指标1提取值,但我不确定如何在SQL查询中将其除以总数。

2 个答案:

答案 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