2017-08-16 76 views
0

我從另一個表中獲得了結果集。 質疑父表:sql表中列的平均值

SELECT Type, COUNT(Result) AS [Counts] 
FROM ParentTable 
GROUP BY Type 

結果:

=============== 
TYPE | Counts 
=============== 
Type1 | 43 
Type2 | 13 
Type3 | 16 

我需要的輸出都採用以下格式...

=============================== 
TYPE | COUNTs | [Percentage]  
===============================  
Type1 | 43  | 59.72 
Type2 | 13  | 18.06 
Type3 | 16  | 22.22 
+2

請標記正在使用的數據庫。 –

+0

P.S.這不是平均值... – Milney

回答

1

大多數數據庫支持ANSI標準窗口功能。你可以這樣做:

SELECT Type, COUNT(Result) AS [Counts], 
     COUNT(Result) * 1.0/SUM(COUNT(Result)) OVER() as ratio 
FROM ParentTable 
GROUP BY Type ; 
+0

感謝您的回覆。 SUM(COUNT(Result)) 我無法執行一個聚合函數,它已經包含一個合計 –

+0

@HarishKothuri。 。 。現在有正確的語法。 –

+0

謝謝!它運作良好。 –

0

你可以試試它;我只將COUNT改爲SUM以簡化答案。

declare @ParentTable as table (Type char(5) , Result int) 
    INSERT @ParentTable (Type, Result) values 
    ('Type1' , 43), 
    ('Type2' , 13), 
    ('Type3' , 16) 




    SELECT Type, 
SUM(Result) OVER (PARTITION BY Type) AS [Counts] , 
Round(Cast(SUM(Result) OVER (PARTITION BY Type) as float)/Cast(SUM(Result) OVER (PARTITION BY 1) as float) * 100. ,2) Percentage 
     FROM @ParentTable 


Type Counts  Percentage 
----- ----------- ---------------------- 
Type1 43   59.72 
Type2 13   18.06 
Type3 16   22.22