所以,我有一张表,里面有一群人进行了多次调查。每项调查的评分均为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)
但上面的较长版本应该适用于几乎任何数据库。