有两个相关表: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 和错误的员 worker 数。我一直在试图弄清楚为什么这段代码不会给我超过两名员工的项目。请帮我弄清楚我做错了什么。
最佳答案
你不需要内部查询,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;
关于mysql - 列出所有项目的项目编号、项目名称和员 worker 数 > 2 名员工参与其中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101977/