У меня есть таблица SQL с данными о продажах (например, приведенная ниже), как я могу сгенерировать набор результатов, который включает промежуточные итоги и в идеале сортирует результаты в порядке убывания самого высокооплачиваемого клиента?
Итак, учитывая следующую таблицу:
CUS_ID | PRODUCT | AMOUNT
12 | A | 2.50
12 | B | 5.80
24 | A | 10.00
24 | B | 30.00
Я бы получил следующий результат:
CUS_ID | Product | AMOUNT
24 | A | 10.00
24 | B | 30.00
24 | Total | 30.00
12 | A | 2.50
12 | B | 5.00
12 | Total | 7.50
Пока я могу прийти со следующим запросом:
SELECT cus_id, product, amount FROM Sales
UNION ALL
(SELECT cus_id, 'ZZZZ' AS product, SUM(amount) FROM Sales GROUP BY cus_id)
ORDER BY cus_id, product
Однако запрос использует «ZZZZ» вместо «Всего» (что можно исправить с помощью поиска и замены впоследствии), но он не сортируется в порядке суммы.
EDIT: пожалуйста, не стесняйтесь публиковать ответы, которые не относятся к сортировке. Некоторые ответы оказались для меня очень полезными.