SQL Server вычисляет процентное соотношение с в группе

#sql #sql-server #count #aggregate-functions #percentage

#sql #sql-сервер #количество #агрегатные функции #процентное соотношение

Вопрос:

У меня есть временная таблица, которая дает мне эти результаты.

 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
 

любая помощь в этом

Ответ №1:

Вы можете использовать оконные функции:

 select question, option, totalusers,
    100.0 * totalusers / sum(totalusers) over(partition by question) as percentage
from @temporaryresulttable