SELECT pnumber, pname, COUNT(*)
FROM project
INNER JOIN works_on ON pno=pnumber
INNER JOIN department ON dnumber=dnum
GROUP BY pnumber
现在,mysql 将返回项目编号和名称,以及正在处理它的员工数量。我想要做的是 mysql 只计算部门 5 的员工。换句话说,有来自不同部门的人从事项目,但我只想计算部门 5 的员工,而不是全部。
您可以使用WHERE
SELECT pnumber, pname, COUNT(*)
FROM project
JOIN works_on ON pno = pnumber
JOIN department ON dnumber=dnum
WHERE dnumber = 5
GROUP BY pnumber
编辑
SELECT pnumber, pname, COUNT(*),SUM(IF(dnumber=5, 1, 0)) AS count5
FROM project
JOIN works_on ON pno = pnumber
JOIN department ON dnumber=dnum
GROUP BY pnumber
如果 Barmar 和 Shafeeq 关于使用WHERE
子句的建议对您不起作用(例如,如果您需要在结果中包括所有部门,但只计算部门 5 的人员),您可以使用以下命令:
SUM(IF(dnum=5, 1, 0)) AS CountFromDepartment5
所以我们有:
SELECT pnumber, pname, COUNT(*) AS TotalCount, SUM(IF(dnum=5, 1, 0)) AS CountFromDepartment5
FROM project
INNER JOIN works_on ON pno=pnumber
INNER JOIN department ON dnumber=dnum
GROUP BY pnumber
使用一个WHERE
子句来指定您想要的部门。
SELECT pnumber, pname, COUNT(*)
FROM project
INNER JOIN works_on ON pno=pnumber
WHERE dnumber = 5
GROUP BY pnumber
您不需要加入 with department
,因为部门编号也作为外键存在于works_on
表中。