SELECT
dnum
, SUM(IF(salary>20000, 1, 0)) AS Employee
FROM project
INNER JOIN works_on
ON pno=pnumber
INNER JOIN employee
ON dno=dnum
GROUP BY dnum HAVING COUNT(*) >2
我首先要确定每个部门是否有超过2名员工,如果是,则获取部门编号和员工人数。但只有那些高于20,000的人。
我这样做的方式,它显示了其中一个部门的正确结果,但对于其他部门,它显示了完全错误的计数。例如,对于部门4,它显示18,但正确的计数应该只有6.
答案 0 :(得分:1)
使用WHERE salary > 20000
代替,无需使用CASE
:
SELECT
dnum,
COUNT(*) AS Employee
FROM project
INNER JOIN works_on ON pno = pnumber
INNER JOIN employee ON dno = dnum
WHERE salary > 20000
GROUP BY dnum
HAVING COUNT(*) >2;
如果数字重复,您可能还需要使用COUNT (DISTINCT EmployeeNumber)
。