Sql server 2012 T-SQL Server 2012将分组计数除以分组帐户总数
我试图获得每行的百分比结果,其中该行的分组计数除以所有行的总计数,如示例所示: 因此,我以SUM列作为气球行占总数的百分比结束Sql server 2012 T-SQL Server 2012将分组计数除以分组帐户总数,sql-server-2012,Sql Server 2012,我试图获得每行的百分比结果,其中该行的分组计数除以所有行的总计数,如示例所示: 因此,我以SUM列作为气球行占总数的百分比结束 SELECT DATEPART(YEAR, Balloons) AS [Year], COUNT(Balloons) AS [Balloons], SUM = (SELECT COUNT(Balloons) FROM TABLE WHERE col2 BETWEEN '20000101' AND '20160101
SELECT DATEPART(YEAR, Balloons) AS [Year],
COUNT(Balloons) AS [Balloons],
SUM = (SELECT COUNT(Balloons)
FROM TABLE
WHERE col2 BETWEEN '20000101' AND '20160101'
)
FROM TABLE
WHERE col2 BETWEEN '20000101' AND '20160101'
GROUP BY DATEPART(YEAR, Balloons)
ORDER BY COUNT(Balloons)
:
SELECT [Year], [Balloons], ROUND(CAST([Balloons] AS REAL) / CAST([SUM] AS real) * 100 ,3) AS [%] FROM (
SELECT
DATEPART(YEAR, Balloons) AS [Year]
,COUNT(Balloons) AS [Balloons]
,SUM = (SELECT COUNT(Balloons) FROM TABLE WHERE col2 BETWEEN '20000101' AND '20160101')
FROM TABLE
WHERE col2 BETWEEN '20000101' AND '20160101'
GROUP BY DATEPART(YEAR, Balloons)
) AS d
GROUP BY [Balloons], [Year], [SUM]
ORDER BY [Year]
Results
Year Balloons %
1 2010 2 0.009
2 2011 1 0.005
3 2012 1815 8.613
4 2013 5022 23.831
5 2014 7742 36.739
6 2015 6491 30.802