Пятница, 29.11.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 109
Гостей: 109
Пользователей: 0
Главная » 2018 » Август » 14 » Дополнительные функции суммирования в SQL-строке
22:10
Дополнительные функции суммирования в SQL-строке

Дополнительные функции суммирования в SQL-строке

В базе есть таблица R_R. Если выбрать из неё всё, что есть (без фильтров) то это будет весь итоговый бюджет по кодам. Если из всех кодов выбрать только раздел, целевую статью и фонд, то можно получить такую выборку:

Довольно неудобно то, что тут не видно общей суммы. Чтобы её узнать надо скопировать это в Excel и просуммировать там.
Самый постой способ увидеть итог это добавить после GROUP BY ROLLUP (). Он, правда ещё кучу промежуточных итогов насчитает, но нужное тоже в конце будет:

А ещё сразу видны итоги, например, по разделам. Тоже полезно.
Близкое к ROLLUP выражение – CUBE:
SELECT     TOP (100) PERCENT dbo.K_LSR.CPR, dbo.K_LSR.CDEP, SUM(dbo.R_R.SUMM) AS Summ
FROM         dbo.R_R INNER JOIN
                      dbo.K_LSR ON dbo.R_R.K_LSRID = dbo.K_LSR.K_LSRID
GROUP BY CUBE (dbo.K_LSR.CPR, dbo.K_LSR.CDEP)
Оно позволяет получить то же самое, но иначе отсортированное. Мне сложно это описать, проще положить файл с результатами двух выборок:
https://drive.google.com/file/d/1f8pir0s6FxDvjsPtx-GNdELlbimlL8eZ/view?usp=sharing

GROUPING SETS выдаёт суммы по всем отдельным полям группировки:

Ниже строки с суммами по CPR без CDEP/
Результат выборки можно несколько облагородить заменив NULL на слова «Итого по» и т.д.
Функция GROUPING возвращает 1 или 0 в зависимости от того является ли это поле полем группировки в этой строке:

Это можно обработать стандартный CASE. Примерно так это может выглядеть:



 

Просмотров: 273 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz