SQL分组集和综合

时间:2017-07-12 19:29:24

标签: sql oracle sum grouping-sets

我试图使用特定的综合规则(第5和第6列)计算一定数值和相同金额之间的差异:

select
    A,
    B,
    C,
    sum(D),
    sum(D)/300,
    case when sum(D)/300 < 1.5 then 0 else round(sum(D/300), 0) end

from table

group by grouping sets ((A,B,C), ())

SQL有效,但最后一行是错误的。对于第4列和第5列,最后一行中的总计似乎是正确的,但在第6列中并未将列的向上舍入值相加,而是列5的总计的向上舍入值...

我做错了什么? (目标:比较第5栏和第6栏的总数)

欢迎任何帮助!

编辑:

现在的结果是这样的(只有第5和第6列):

 1,2 0  1,5 2
 3,1 3
  
 5,8 6

在这个例子中,第二列的总和应该是5,但它表示6,使用未包含的值......

1 个答案:

答案 0 :(得分:0)

您缺少外部SUM

select
    A,
    B,
    C,
    sum(D),
    sum(D)/300,
    SUM(case when sum(D)/300 < 1.5 then 0 else round(sum(D/300), 0) end) as result

from table

group by grouping sets ((A,B,C), ())