分组TSQL查询中的总计数

Pau*_*haw 4 sql t-sql group-by sql-server-2008

我有一个性能繁重的查询,根据其他表中的数据等过滤掉许多不需要的记录.

我正在平均一列,并且还返回每个平均组的计数.这一切都很好.

但是,我还想包括TOTAL计数的百分比.

有没有办法获得这个总计数而不重新运行整个查询,或显着增加性能负载?

如果我不需要完全重构子查询(例如,通过获取其外部的总计数),我也会更喜欢,但如果需要可以做.

SELECT 
    data.EquipmentId,
    AVG(MeasureValue) AS AverageValue,
    COUNT(data.*) AS BinCount
    COUNT(data.*)/ ???TotalCount??? AS BinCountPercentage
FROM
(SELECT * FROM MultipleTablesWithJoins) data
GROUP BY data.EquipmentId
Run Code Online (Sandbox Code Playgroud)

Nik*_*vić 7

请参见窗口功能.

SELECT 
    data.EquipmentId,
    AVG(MeasureValue) AS AverageValue,
    COUNT(*) AS BinCount,
    COUNT(*)/ cast (cnt as float) AS BinCountPercentage
FROM
(SELECT *,
      -- Here is total count of records
        count(*) over() cnt
 FROM MultipleTablesWithJoins) data
GROUP BY data.EquipmentId, cnt
Run Code Online (Sandbox Code Playgroud)

编辑:忘了实际划分数字.