#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)
Комментариев нет:
Отправить комментарий