【问题标题】:How to calculate percentage of each row in SQL Server 2012?如何计算 SQL Server 2012 中每一行的百分比?
【发布时间】:2015-01-16 02:29:51
【问题描述】:

我在 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。

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

谢谢。

【问题讨论】:

    标签: sql sql-server sql-server-2012


    【解决方案1】:

    您可以使用子查询来获取SUM(Total_Count)

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

    【讨论】:

      【解决方案2】:

      使用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
      

      【讨论】:

      • over partition by (select NULL) 可以简单地为over ()
      • @GordonLinoff - 谢谢你,先生:)我不知道。
      • 这是更好的解决方案,应该被接受。
      猜你喜欢
      • 2015-10-03
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多