Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Вывод SUM для UNION запроса

#sql


Добрый день. Есть запрос следующего вида:

SELECT COUNT(id) FROM A 
WHERE id_C = 2

UNION

SELECT COUNT(id) A FROM A
WHERE id_C = 3


Запрос урезал максимально, чтобы была ясна суть.

Есть результаты в таком виде:

4
7


Требуется к этому же результату добавить третьей строкой сумму предыдущих двух строк:

4
7
11


Такое возможно не запиливая дополнительного запроса вида:

SELECT COUNT(id) FROM A 
WHERE id_C IN(2, 3)


?
    


Ответы

Ответ 1



Классически задача решается при помощи WITH ROLLUP. Однако, в MySQL он работает только в рамках одного запроса, в случае же UNION у вас два отдельных запроса. Можно поступить следующим образом SELECT COUNT(id) FROM A WHERE id_C IN (2,3) GROUP BY id_C WITH ROLLUP

Ответ 2



Без UNION и ROLLUP: select count(coalesce(a,b)) from (SELECT id_C a FROM A where id_C in(2,3) ) X full join (SELECT 4 b FROM A where id_C in(2,3) ) Y on 1=2 group by coalesce(a,b)

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

Отправить комментарий