Преобразование текста в число для опроса удовлетворенности клиентов - PullRequest
1 голос
/ 23 марта 2019

У меня есть отзывы об удовлетворенности клиентов, например, Хорошо, плохо, отлично и т. Д., Я хотел бы назначить числовое значение, например, Отлично = 5, Хорошо = 4, Нейтрально = 2, Неудовлетворительно = 0 Затем суммируйте значение по категории

Этот запрос мне нужно начать только с "Выбрать"

Группировка по месяцам Отлично 400 Хорошо 500

Ответы [ 2 ]

3 голосов
/ 23 марта 2019

вариант использования, когда

select sum(case when satisfaction ='Excellent' then 5 
            when satisfaction ='Good' then 4
            when satisfaction ='Neutral' then 2
             when satisfaction ='Dissatisfied' then 0 end) as satisfaction_val
,category from table_name group by category
0 голосов
/ 23 марта 2019

Я думаю, у вас должна быть справочная таблица для этой цели.Если у вас его нет, вы можете собрать его вместе в самом запросе:

select t.category, sum(v.satisfaction_val)
from t cross join
     (values ('Excellent', 5),
             ('Good', 4),
             ('Neutral', 2),
             ('Dissatisfied', 0)
    ) v(satisfaction, satisfaction_val)
    on t.satisfaction = v.satisfaction
group by t.category;

Это лучшее решение, чем просто использование выражения case в строке, потому что значения можно перезаписать-используемый.Например, если вы хотите получить общее количество положительных ответов, вы можете сделать следующее:

select t.category, sum(v.satisfaction_val),
       sum(case when v.satisfaction_value > 3 then 1 else 0 end)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...