Общая Сумма Оракула

#oracle #sum #grouping

Вопрос:

У меня есть запрос, в котором я выбираю 4 столбца. И я хочу поместить общую сумму в нижней части одного из столбцов и не группировать ее:

ВЫБЕРИТЕ customer_id, адрес электронной почты, total_amount, дата заказа
ОТ……………….

Я хочу сделать общую сумму TOTAL_AMOUNT внизу, но не беспокоиться о какой-либо группировке. Я не вижу, как это сделать с помощью ГРУППИРОВКИ или СВЕРТКИ. Я надеюсь, что это будет не как какой-либо текущий итог в другом столбце, а как общий итог внизу.

Большое спасибо.

Комментарии:

1. Поскольку в вашем вопросе есть тег oracle , вы можете добиться желаемого с помощью комбинации команд SQL и SQL*Plus . Это приемлемо?

2. Это звучит как что — то вроде вашего приложения или уровня отчетности; но некоторые клиенты могут делать это изначально, включая SQL*Plus, SQLcl и разработчика SQL, но, возможно, и другие.

3. Пожалуйста, вставьте примеры данных.

Ответ №1:

Вы можете добавить строку общего итога с a UNION ALL и столбцом, чтобы отслеживать, соответствует ли строка общему итогу.

 select customer_id, email, total_amount, order_date, 0 is_grand_total
from orders
union all
select null, null, sum(total_amount), null, 1 is_grand_total
from orders
order by is_grand_total, customer_id;
 

Пример скрипки SQL.

(На мой взгляд, это часто хороший способ добавить логику обобщения в запросы. Я бы предпочел немного более сложное решение с одним языком (SQL), чем решение, включающее два или более языков или приложений.)

Комментарии:

1. Есть ли шанс, что скрипка бд покажет ваш запрос в действии?

2. @Abra, конечно, смотрите мой отредактированный ответ для примера.

Ответ №2:

Простая опция SQL*Plus:

 SQL> break on report
SQL> compute sum of sal on report
SQL>
SQL> select deptno, ename, sal
  2  from emp
  3  where deptno = 10;

    DEPTNO ENAME             SAL
---------- ---------- ----------
        10 CLARK            2450
        10 KING             5001
        10 MILLER           1300
                      ----------
sum                         8751

SQL>