1
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 的员工,而不是全部。

4

3 回答 3

2

您可以使用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
于 2013-11-03T08:46:34.517 回答
2

如果 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
于 2013-11-03T08:49:40.747 回答
0

使用一个WHERE子句来指定您想要的部门。

SELECT pnumber, pname, COUNT(*)
FROM project 
INNER JOIN works_on ON pno=pnumber 
WHERE dnumber = 5
GROUP BY pnumber

您不需要加入 with department,因为部门编号也作为外键存在于works_on表中。

于 2013-11-03T08:48:01.000 回答