SQL累积计数

DNa*_*Nac 7 sql sql-server sql-server-2008

我有部门的表.我需要计算在哪个部门内有多少人.这很容易做到

SELECT DEPT,
       COUNT(*) as 'Total'
    FROM SR
    GROUP BY DEPT;
Run Code Online (Sandbox Code Playgroud)

现在我还要做累积计数如下:

在此输入图像描述

我发现一些SQL来计算运行总数,但不是这样的情况.在这种情况下,你能给我一些建议吗?

D S*_*ley 8

这是使用CTE而不是游标执行此操作的方法:

WITH Base AS
(
    SELECT ROW_NUMBER() OVER (ORDER BY [Count] DESC) RowNum,
    [Dept],
    [Count]
    FROM SR
)
SELECT SR.Dept, SR.Count, SUM(SR2.[Count]) Total
FROM Base SR
INNER JOIN Base SR2
    ON SR2.RowNum <= SR.RowNum
GROUP BY SR.Dept, SR.Count
ORDER BY SR.[Count] DESC
Run Code Online (Sandbox Code Playgroud)

请注意,这是按照Count示例结果的降序排序.如果有一些未显示的其他列应该用于排序,只需Count在每个ORDER BY子句中替换.

SQL小提琴演示