SQL 服务器计算一组中的百分比
SQL Server calculating percentage with in a group
我有一个临时的 table 给了我这些结果。
Question Option TotalUsers
Question1 Q1Option1 4
Question1 Q1Option2 0
Question1 Q1Option3 4
Question1 Q1Option4 0
Question2 Q2Option1 2
Question2 Q2Option2 2
Question2 Q2Option3 2
Question2 Q2Option4 2
查询
SELECT Question, Option, TotalUsers FROM @TemporaryResultTable
我需要计算 TotalUsers 在 TotalUsers 中的百分比,在该问题中它意味着按该问题分组,如下所示。
下面的方法试过了,还是不行。
SELECT Question, Option, TotalUsers, SUM([TotalUsers]) * 100/NULLIF(SUM([TotalUsers]), 0) OVER (PARTITION BY Question) AS 'Percentage' FROM @TemporaryResultTable
GROUP BY Question, Option, TotalUsers
对此有任何帮助
您可以使用 window 函数:
select question, option, totalusers,
100.0 * totalusers / sum(totalusers) over(partition by question) as percentage
from @temporaryresulttable
我有一个临时的 table 给了我这些结果。
Question Option TotalUsers
Question1 Q1Option1 4
Question1 Q1Option2 0
Question1 Q1Option3 4
Question1 Q1Option4 0
Question2 Q2Option1 2
Question2 Q2Option2 2
Question2 Q2Option3 2
Question2 Q2Option4 2
查询
SELECT Question, Option, TotalUsers FROM @TemporaryResultTable
我需要计算 TotalUsers 在 TotalUsers 中的百分比,在该问题中它意味着按该问题分组,如下所示。
下面的方法试过了,还是不行。
SELECT Question, Option, TotalUsers, SUM([TotalUsers]) * 100/NULLIF(SUM([TotalUsers]), 0) OVER (PARTITION BY Question) AS 'Percentage' FROM @TemporaryResultTable
GROUP BY Question, Option, TotalUsers
对此有任何帮助
您可以使用 window 函数:
select question, option, totalusers,
100.0 * totalusers / sum(totalusers) over(partition by question) as percentage
from @temporaryresulttable