У меня есть следующая таблица
Cash_table
ID Cash Rates Amount
1 50 3 16
2 100 4 25
3 130 10 7
3 130 10 6
4 13 7 1.8
5 30 8 2.5
5 30 10 1
6 10 5 2
В результате я хочу собрать все записи, имеющие Count (id)> 1 примерно так:
ID New_Cash New_Rates New_Amount
1 50 3 16
2 100 4 25
3 130 10+10 130/(10+10)
4 13 7 1.8
5 30 8+10 30/(8+10)
6 10 5 2
Поэтому я хочу изменить только те строки, в которых Count (id)> 1, и оставить остальные, как было.
Длястроки с count (id)> 1 Я хочу суммировать ставки и взять наличные и разделить их на сумму ставок.Тарифы сами по себе не являются проблемой, поскольку я могу суммировать их, группировать по идентификатору и получать желаемый результат.
Проблема со столбцом New_Amount:
Я пытаюсь это сделатьс указанием регистра, но он не работает:
select id,
cash as new_cash,
sum(rates) as new_rates,
(case count(id)
when 1 then amount
else cash/sum(nvl(rates,null))
end) as new_amount
from Cash_table
group by id