列出项目编号,项目名称和所有项目的员工数量> 2名员工正在努力

时间:2017-02-07 23:32:25

标签: mysql sql database subquery

有两个相关的表:works_on和project。项目包含以下属性:PName,PNo,PLocation和DNo(部门编号)。 Works_on包含以下属性:SSN,PNo,小时。

我想只计算出现两次以上的SSN,然后提供计数值,PName和PNo。

这是我到目前为止的尝试:

SELECT
    P.PNo, P.PName, 
    COUNT(W.SSN) AS no_employees
FROM
    project AS P INNER JOIN works_on AS W ON P.PNO = W.PNo
WHERE W.SSN IN (SELECT SSN FROM WORKS_ON GROUP BY SSN HAVING COUNT(SSN) > 2)
GROUP BY P.PNo

但是我得到了错误的PNo和错误的员工数量。我一直试图弄清楚为什么这段代码不会给我两个以上员工的项目。请帮我弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:2)

您不需要内部查询group by having应该做,例如:

SELECT p.no, p.name, COUNT(w.ssn) as employees
FROM project p JOIN works_on w ON p.pno = w.pno
GROUP BY p.no, p.name
HAVING employees > 2;