2015-01-15 71 views
4

我在SQL Server 2012中的表像這樣的數據:如何計算SQL Server 2012中每行的百分比?

Request_Type Total_Count 
--------------------------- 
    General   25 
    Inquiry   15 

我要回數的百分比在最後一列是這樣的:

Request_Type Total_Count Total_Percentage 
-------------------------------------------------- 
    General   25    62.5 
    Inquiry   15    37.5 

我嘗試下面的查詢,

select 
    Request_Type, Total_Count, 
    (Total_Count* 100)/isnull(sum(Total_Count),0) as Total_Percentage 
from 
    tbl_Request 

但它在Total_Percentage列中返回100。

任何想法如何實現結果將不勝感激。

謝謝。

回答

7

您可以使用子查詢來獲取SUM(Total_Count)

SELECT Request_Type 
    , Total_Count 
    , (Total_Count * 100)/(SELECT SUM(Total_Count) FROM tbl_Request) AS Total_Percentage 
FROM tbl_Request 
5

使用Sum Over()的手段來得到所有行的sum然後找到percentage。試試這個..

SELECT Request_Type, 
     Total_Count, 
     (Total_Count * 100.0)/Sum(Total_Count)OVER() 
FROM (SELECT 'General' AS Request_Type,25  AS Total_Count 
     UNION 
     SELECT 'Inquiry',15)a 

結果:

Request_Type Total_Count Percentage 
General   25   62.5 
Inquiry   15   37.5 
+3

的'在由(選擇NULL)分區'可以簡單地是'在()'。 – 2015-01-15 18:06:05

+0

@GordonLinoff - 謝謝你,先生:)我不知道這一點。 – 2015-01-15 18:07:30

+0

這是更好的解決方案,應該是公認的解決方案。 – 2015-01-16 22:06:50