有计数(*)MySQL

时间:2013-11-03 11:00:04

标签: mysql sql

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.

1 个答案:

答案 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)