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

Arp*_*ita 4 sql sql-server sql-server-2012

我在SQL Server 2012中有一个表,其数据如下:

Request_Type    Total_Count
---------------------------
   General         25
   Inquiry         15
Run Code Online (Sandbox Code Playgroud)

我想返回最后一列中的计数百分比,如下所示:

Request_Type    Total_Count    Total_Percentage
--------------------------------------------------
   General         25              62.5
   Inquiry         15              37.5
Run Code Online (Sandbox Code Playgroud)

我尝试了以下查询,

select 
    Request_Type, Total_Count, 
    (Total_Count* 100) / isnull(sum(Total_Count),0) as Total_Percentage 
from 
    tbl_Request
Run Code Online (Sandbox Code Playgroud)

但它在Total_Percentage列中返回100 .

任何关于如何实现结果的想法将不胜感激.

谢谢.

pot*_*hin 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
Run Code Online (Sandbox Code Playgroud)


Pரத*_*ீப் 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 
Run Code Online (Sandbox Code Playgroud)

结果:

Request_Type    Total_Count Percentage
General         25          62.5
Inquiry         15          37.5
Run Code Online (Sandbox Code Playgroud)

  • `over partition by(select NULL)`可以简单地是`over()`. (3认同)