Подсчет количества вхождений значения, приводящего к ошибке «Несоответствие ввода»? - PullRequest
0 голосов
/ 06 мая 2020

Итак, у меня есть таблица, за которой группа людей прошла несколько опросов. У каждого опроса был рейтинг из 10. Мне нужно найти среднее значение за опрос (что я уже сделал), а также количество десятков, полученных каждым опросом.

Ниже приведен код, который, как я думал, будет работать:

SELECT person, survey, AVG(rating), COUNT(CASE WHEN rating = 10) 
FROM Table
GROUP BY person, survey

Я получаю следующую ошибку: несоответствующий ввод «КОГДА» ожидает {')', ','}

Не уверен, где я ошибся. Ценю любую помощь.

1 Ответ

0 голосов
/ 06 мая 2020

Выражение CASE в вашем вызове COUNT является неполным. Используйте эту версию:

SELECT
    person,
    survey,
    AVG(rating) AS avg_rating,
    COUNT(CASE WHEN rating = 10 THEN 1 END) AS cnt
FROM Table
GROUP BY
    person,
    survey;

COUNT() будет считать 1 для каждой записи с рейтингом 10, в противном случае будет засчитано NULL, которое просто игнорируется.

Обратите внимание, что на в некоторых базах данных, таких как MySQL или Postgres, вы можете фактически суммировать прямое логическое выражение:

SUM(rating = 10)

Но более длинная версия выше должна работать практически с любой базой данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...