Transact SQL - Как выполнить дополнительную операцию над набором результатов - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть простой запрос:

select id, count(*) n
from mytable
group by id

Можно ли включить в этот запрос также сумму (n)?Таким образом, результат будет выглядеть примерно так:

id   n
---- -----------
1    12
2    1
3    14
4    1
5    2
6    6

Sum=36

1 Ответ

2 голосов
/ 19 ноября 2010

Вы можете использовать общее табличное выражение , чтобы сделать это:

--
; WITH cte as (SELECT id
               ,count(*) n
               FROM mytable
               GROUP BY id)
SELECT id, n FROM cte
UNION ALL
SELECT 'Sum', SUM(n) from cte

Вы также можете использовать ROLLUP : (это может быть не совсем правильный синтаксис)

SELECT id
      ,count(*) n
FROM mytable
GROUP BY id
WITH ROLLUP
...