SQL 获取百分比

SQL getting Percentage

我有以下代码来计算总死亡人数并按 PersonType 分组。现在我想要一个列来计算每个死亡人数的百分比。即取每种人员类型的值并除以总死亡人数。

Select distinct persontype as PerSsonType, sum(fatalities_in_crash) as  Total_Deaths

  from [CarCrash].[Source_Data_Staging] 
group by PersonType

您可以使用 ANSI 标准 window 函数(大多数数据库都支持这些函数,包括 SQL 服务器):

Select persontype as PerSsonType, sum(fatalities_in_crash) as Total_Deaths,
       sum(fatalities_in_crash) * 1.0 / sum(sum(fatalities_in_crash)) over () as ratio
from [CarCrash].[Source_Data_Staging] 
group by PersonType;

注意:您几乎不需要 SELECT DISTINCTGROUP BY* 1.0 是因为某些数据库使用整数除法——这会为所有行生成 0

您可以将此查询与 select 不分组死亡总和的查询交叉连接:

SELECT   persontype, 
         SUM(fatalities_in_crash) AS Total_Deaths,
         SUM(fatalities_in_crash) / all_deaths AS percentage
FROM     [CarCrash].[Source_Data_Staging] 
JOIN     (SELECT SUM(fatalities_in_crash) AS all_deaths
          FROM   [CarCrash].[Source_Data_Staging]) t
GROUP BY persontype