Sql server 如何在SELECT语句中避免部分百分比的SELECT计数
我想在这里计算每个站点名称的部分百分比,但我会 需要计算我的行的合计计数 下面的查询可以工作,但是有没有一种方法不使用SELECT 在SELECT语句中,还是为此声明变量?我只有这么多的阅读权限 我不能声明变量Sql server 如何在SELECT语句中避免部分百分比的SELECT计数,sql-server,aggregate,Sql Server,Aggregate,我想在这里计算每个站点名称的部分百分比,但我会 需要计算我的行的合计计数 下面的查询可以工作,但是有没有一种方法不使用SELECT 在SELECT语句中,还是为此声明变量?我只有这么多的阅读权限 我不能声明变量 SELECT ServiceSiteName , COUNT(*) AS [Alarms Resolved] -- How can I avoid this. , (SELECT COUNT(1) FROM [C1
SELECT
ServiceSiteName
, COUNT(*) AS [Alarms Resolved]
-- How can I avoid this.
, (SELECT COUNT(1) FROM [C1Datastore].[dbo].[Fct_AlertCRM_Incident]
WHERE Conditions A, B, C) AS [Total Count]
, COUNT(*) / (SELECT COUNT(1) FROM [C1Datastore].[dbo].[Fct_AlertCRM_Incident]
WHERE Conditions A, B, C) AS [% Count]
FROM TableX
WHERE Conditions A, B, C
GROUP BY
ServiceSiteName
ORDER BY [Alarms Resolved] DESC
关键是在(分区)上使用SUM(COUNT()),这要短得多
SELECT
ServiceSiteName
, COUNT(*) AS [Alarms Resolved]
-- Use this
, SUM(COUNT(1)) OVER (PARTITION BY ServiceSiteName) AS [TOTAL]
, COUNT(*) / SUM(COUNT(1)) OVER (PARTITION BY ServiceSiteName) AS [% Count]
FROM TableX
WHERE Conditions A, B, C
GROUP BY
ServiceSiteName
ORDER BY [Alarms Resolved] DESC
为什么投反对票?