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)
请参见窗口功能.
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)
编辑:忘了实际划分数字.