Как рассчитать общую сумму в Oracle

#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;