条件计班数

时间:2019-07-08 11:08:58

标签: mysql sql phpmyadmin

我有一个表格“ 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;

2 个答案:

答案 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进行求值,并在各个记录上进行操作。