我有一个表格“ rota”,志愿者在此提交他们可以利用的班次。他们可以提交6个以上的班次,但最少需要6个班次。
我想看看有多少志愿者选择了每个班次,但是我只想看看那些选择了6个班次的人。
我运行了错误的SQL,但无法弄清楚我做错了什么:
SELECT COUNT(volunteer_id), shift_id
FROM rota
GROUP BY shift_id
WHERE COUNT(shift_id = 6);
编辑: 我错误地解释了我要做什么。
我想看看有多少志愿者选择了每个班次,但是我只想看那些只提交了6个班次的志愿者所选择的班次。有道理吗?
编辑:
尝试了这个但没有用:
SELECT COUNT(volunteer_id), shift_id
FROM rota
WHERE volunteer_id IN (SELECT volunteer_id FROM rota
GROUP BY volunteer_id HAVING COUNT DISTINCT(shift_id) = 6)
GROUP BY shift_id;
答案 0 :(得分:2)
您可以在下面尝试-
SELECT volunteer_id,COUNT(shift_id )
FROM rota
GROUP BY volunteer_id
having COUNT(shift_id )= 6
答案 1 :(得分:1)
使用HAVING
子句:
SELECT COUNT(volunteer_id), shift_id
FROM rota
WHERE volunteer_id IN (SELECT volunteer_id FROM rota
GROUP BY volunteer_id HAVING (COUNT DISTINCT shift_id) = 6)
GROUP BY shift_id
HAVING COUNT(volunteer_id) = 6;
在GROUP BY
发生后 发生的断言需要出现在HAVING
子句中。 HAVING
对记录的组进行操作。另一方面,WHERE
子句在之前 GROUP BY
进行求值,并在各个记录上进行操作。