#sql #oracle
#sql #Oracle
Вопрос:
У меня проблема с вычислением общей суммы. Например
id name date amount
1 A 2017 100
1 A 2018 200
2 B 2017 50
2 B 2016 100
A's total 300
B's total 150
Total 450
Выберите идентификатор, имя, дату, сумму из формы Table1, где дата > 2015 заказ по идентификатору, сумме;
Я хочу рассчитать общую сумму для A, B и AB. Также добавьте новые имена столбцов. Какую функцию мне следует использовать? Спасибо
Ответ №1:
Один из методов использует grouping sets
:
select id, name, date, sum(amount) as amount
from table1
where date > 2015
group by grouping sets ( (id, name, date), (name), () );
Я не уверен, какие новые имена столбцов вы хотите добавить.
Редактировать:
Предполагая, что три ключевых столбца никогда не NULL
, вы можете назначить имена как:
select id,
(case when name is null then 'Total'
when id is null then 'name' || '''s Total'
else name
end) as name
date, sum(amount) as amount
from table1
where date > 2015
group by grouping sets ( (id, name, date), (name), () );
Комментарии:
1. Я хочу добавить имя столбца как A’total, B’total и Total как для A, так и для B. Так что просто поместите имя в (name)?
Ответ №2:
SELECT id , SUM(amount)
FROM yourTable
GROUP BY id;