【问题标题】:List project number, project name and number of employees for all projects > 2 employees working on it列出所有项目的项目编号、项目名称和员工人数 > 2 名员工
【发布时间】:2017-06-25 09:54:51
【问题描述】:

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

【问题讨论】:

    标签: mysql sql database subquery


    【解决方案1】:

    您不需要内部查询,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;
    

    【讨论】:

    • 非常感谢!
    • 仍然不确定我们为什么要做你的作业。那是作业的一部分吗?
    • 我已经在这工作了几个小时,所以我认为通过联系这里我并不是要你做我的功课,而是寻求洞察力或帮助。我是 SQL 新手,正在努力从错误中吸取教训。我真的不知道你为什么在没有提供任何帮助的情况下浪费我们俩的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2013-02-25
    • 2018-11-02
    • 1970-01-01
    相关资源
    最近更新 更多