2016-05-25 2 views
1

Ich versuche, das prozentuale Ergebnis für jede Zeile zu erhalten, wobei die Gruppenzählung für diese Zeile durch die Gesamtsumme aller Zeilen geteilt wird, wie im Beispiel:T-SQL Server 2012 Teilen einer Gruppenzählung durch die Summe des gruppierten Kontos

Balloons

so enden I mit der Summe Spalte als Ballon Reihe Prozentsatz der gesamten auf.

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) 

Antwort

0
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] 

Balloons Table:

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 
Verwandte Themen