Я пытаюсь добавить строку в запрос выбора SQL, который содержит сумму (или любую другую операцию, например, среднее значение, если на то пошло) в качестве последней строки. В этом он чем-то похож на GROUP BY... WITH ROLLUP.
Для начала: допустим, у меня есть таблица t с полями ID, A, B и C, все из которых являются числами. Кроме того, идентификатор не уникален, а скорее является категорией. Мой запрос SELECT должен подсчитывать, сколько из этих чисел попадают в указанный диапазон.
Так, например, конечным результатом будет
(SELECT t.ID, a.ac, b.bc, c.cc FROM t
LEFT JOIN (SELECT COUNT(*) cc,ID FROM t WHERE A BETWEEN 2 AND 4 GROUP BY ID) AS a ON a.ID=t.ID
LEFT JOIN (SELECT AVG(B) cc,ID FROM t WHERE B BETWEEN 19 AND 40 GROUP BY ID) AS b ON b.ID=t.ID
LEFT JOIN (SELECT COUNT(*) cc,ID FROM t WHERE C BETWEEN 12 AND 14 GROUP BY ID) AS c ON a.ID=t.ID GROUP BY t.ID)
union
(select 'Overall',
(SELECT COUNT(*) cc FROM t WHERE A BETWEEN 2 AND 4),
(SELECT AVG(B) cc FROM t WHERE B BETWEEN 19 AND 40),
(SELECT COUNT(*) cc FROM t WHERE C BETWEEN 12 AND 14) );
Однако это решение не идеально, так как мне нужно заново сформулировать условия для A, B и C. Я хотел бы знать, есть ли простой способ добиться того же результата, указав условия только один раз.
Заранее спасибо.