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

标签 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 和错误的员 worker 数。我一直在试图弄清楚为什么这段代码不会给我超过两名员工的项目。请帮我弄清楚我做错了什么。

最佳答案

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

关于mysql - 列出所有项目的项目编号、项目名称和员 worker 数 > 2 名员工参与其中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101977/

相关文章:

mysql - 当我运行 app.js 时,它显示错误 "TypeError: knex.select is not a function"

mysql - 如何创建 API 在 MySQL 中插入数据并解析具有重复键的 json

php - 将多个 foreach MySQL 插入语句与 PHP 数组数据合并为一个

sql - 使用 RANK() OVER 计数时跳过空值

sql - 基于条件使用 Case When 选择列 - SQL Server

node.js - 在 Sequelize 迁移中定义部分索引?

php - 如何使用 PHP 从数据库中获取单个数字

database - 什么是分面搜索?

mysql - mysql like命令中%位置的区别

java - 在循环内准备语句