2017-11-11 9 views
1

PersonTypeによって合計死亡数とグループを計算する次のコードがあります。今度は、各死亡者の割合を計算する列が必要です。それはそれぞれの人のタイプの値を取って、死亡者の合計で割ることです。パーセンテージを取得するSQL

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

    from [CarCrash].[Source_Data_Staging] 
group by PersonType 

enter image description here

+1

使用しているデータベースであなたの質問にタグを付けます。 –

答えて

2

あなたは(SQL Serverなど、ほとんどのデータベースでサポートされています)ANSI標準のウィンドウ関数を使用することができます。

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; 

注:あなたはGROUP BYSELECT DISTINCTを必要とすることはほとんどありません。 * 1.0は、一部のデータベースで整数除算を使用するため、すべての行に対して0が生成されるためです。

+0

ありがとうございます。出来た。 – cookiemonster

1

あなたは、グループ化せずに死亡の合計を選択クエリでこのクエリをクロス参加することができます:

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 
関連する問題