Наборы группировки SQL и сводка новостей
Я пытаюсь вычислить разницу между определенной суммой значений и одной и той же суммой, используя определенные правила округления (столбцы 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 ответ
Вам не хватает внешнего 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), ())