列出所有项目的项目编号、项目名称和员工人数 > 2 名员工参与其中

List project number, project name and number of employees for all projects > 2 employees working on it

有两个相关表:works_on 和项目。项目包含以下属性: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 和错误的员工人数。我一直在试图弄清楚为什么这段代码不会给我超过两名员工的项目。请帮我弄清楚我做错了什么。

您不需要内部查询,group byhaving 应该可以,例如:

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;