有两个相关的表: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和错误的员工数量。我一直试图弄清楚为什么这段代码不会给我两个以上员工的项目。请帮我弄清楚我做错了什么。
答案 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;