计算导致"Mismatched Input"错误的值的出现次数?



所以,我有一张表,里面有一群人进行了多次调查。每项调查的评分均为10分。我需要找到每次调查的平均值(我已经做过了(,以及每次调查收到的10分的数量。

以下是我认为可以工作的代码:

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

我得到的错误是:输入'WHEN'不匹配,应为{'(',','}

不确定我哪里错了。感谢您的帮助。

COUNT的调用中的CASE表达式不完整。使用此版本:

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

对于每一个评分为10的记录,COUNT()将计数1,否则它将计数NULL,这将被忽略。

请注意,在一些数据库上,例如MySQL或Postgres,您实际上可能会求和一个直接的布尔表达式:

SUM(rating = 10)

但上面的较长版本应该适用于几乎任何数据库。

最新更新