Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用条件mysql进行计数_Mysql_Sql - Fatal编程技术网

使用条件mysql进行计数

使用条件mysql进行计数,mysql,sql,Mysql,Sql,现在,mysql将返回项目编号和名称,以及从事该项目的员工人数。我想做的是mysql只统计第五部门的员工。换言之,有来自不同部门的人员从事项目工作,但我只希望统计第5部门的人员,而不是全部。您可以使用WHERE SELECT pnumber, pname, COUNT(*) FROM project INNER JOIN works_on ON pno=pnumber INNER JOIN department ON dnumber=dnum GROUP BY pnumber 编辑 SEL

现在,mysql将返回项目编号和名称,以及从事该项目的员工人数。我想做的是mysql只统计第五部门的员工。换言之,有来自不同部门的人员从事项目工作,但我只希望统计第5部门的人员,而不是全部。

您可以使用
WHERE

SELECT pnumber, pname, COUNT(*)
FROM project 
INNER JOIN works_on ON pno=pnumber 
INNER JOIN department ON dnumber=dnum
GROUP BY pnumber
编辑

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

您可以使用
WHERE

SELECT pnumber, pname, COUNT(*)
FROM project 
INNER JOIN works_on ON pno=pnumber 
INNER JOIN department ON dnumber=dnum
GROUP BY pnumber
编辑

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

使用指定所需部门的
WHERE
子句

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

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

使用指定所需部门的
WHERE
子句

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部门的人数),则可以使用以下方法:

SELECT pnumber, pname, COUNT(*)
FROM project 
INNER JOIN works_on ON pno=pnumber 
WHERE dnumber = 5
GROUP BY pnumber
所以我们有:

 SUM(IF(dnum=5, 1, 0)) AS CountFromDepartment5

如果Barmar和Shafeeq建议使用
WHERE
子句对您不起作用(例如,如果您需要在结果中包括所有部门,但只计算第5部门的人员),您可以使用以下方法:

SELECT pnumber, pname, COUNT(*)
FROM project 
INNER JOIN works_on ON pno=pnumber 
WHERE dnumber = 5
GROUP BY pnumber
所以我们有:

 SUM(IF(dnum=5, 1, 0)) AS CountFromDepartment5

这不是
WHERE
子句的作用吗?不,如果我使用WHERE,它只返回来自第5部门项目的结果。我想要所有部门的项目,但员工计数只来自第5部门。那么你在
WHERE
子句中使用了错误的列。如果你显示了架构,会有所帮助。为什么项目有部门数字?人员在部门,项目不在。这不是
WHERE
子句的作用吗?不,如果我使用WHERE,它只返回第5部门项目的结果。我希望所有部门都有项目,但员工人数只来自第5部门。那么你在
WHERE
子句中使用了错误的列。如果你显示了架构。为什么项目有部门号?人在部门,项目不在部门。我已经尝试过,如果我使用where,它只返回部门5中项目的结果。我想要所有部门的项目,但员工计数只来自部门5。我已经尝试过,如果我使用where,它只返回结果来自第五部门的项目。我想要所有部门的项目,但员工计数只来自第五部门。谢谢。这正是我想要的方式。我试图单独使用计数,这就是我无法使其工作的原因。谢谢。这正是我想要的方式。我试图单独使用计数,这就是我无法使其工作的原因。