如何在SQL Server 2012中计算每行的百分比?

4
我在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。有任何想法实现这个结果都将不胜感激。谢谢。
2个回答

8
您可以使用子查询来获取 SUM(Total_Count) 值:
SELECT Request_Type
     , Total_Count
     , (Total_Count * 100) / (SELECT SUM(Total_Count) FROM tbl_Request) AS Total_Percentage
FROM tbl_Request

6

使用Sum Over()技巧获取所有行的总和,然后找到百分比。试试这个...

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
"over partition by (select NULL)" 可以简化为 "over ()"。 - Gordon Linoff
@GordonLinoff - 谢谢您,先生 :) 我不知道那个。 - Pரதீப்
这是更好的解决方案,应该被接受。 - Gordon Linoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接