R10-21 检索职员最多的部门编号和名称 分数 5 全屏浏览 作者 蒋维 单位 浙江树人学院 检索职员最多的部门编号和名称 提示:请使用SELECT语句作答。 表结构: 请在这里写定义表结构的SQL语句。 CREATE TABLE `dept` ( `deptno` decimal(2,0) NOT NULL, `dname` varchar(14) DEFAULT NULL, `loc` varchar(13) DEFAULT NULL, PRIMARY KEY (`deptno`) ) ; CREATE TABLE `emp` ( `empno` decimal(4,0) NOT NULL, `ename` varchar(10) DEFAULT NULL, `job` varchar(9) DEFAULT NULL, `mgr` decimal(4,0) DEFAULT NULL, `hiredate` date DEFAULT NULL, `sal` decimal(7,2) DEFAULT NULL, `comm` decimal(7,2) DEFAULT NULL, `deptno` decimal(2,0) DEFAULT NULL, PRIMARY KEY (`empno`) ) ; CREATE TABLE `salgrade` ( `grade` decimal(10,0) NOT NULL, `losal` decimal(10,0) DEFAULT NULL, `hisal` decimal(10,0) DEFAULT NULL, PRIMARY KEY (`grade`) ); 表样例 请在这里给出上述表结构对应的表样例。例如 emp表: image.png dept表: image.png 输出样例: 请在这里给出输出样例。 image.png 代码长度限制 16 KB 时间限制 400 ms 数据库 MySQL 结果输出要求 严格对比顺序与数据 建表语句 查看 结果表结构 查看
时间: 2025-06-05 14:40:57 浏览: 22
### 查找职员最多的部门编号和名称
为了实现这一目标,可以通过 `JOIN` 将 `dept` 和 `emp` 表关联起来,并按照部门进行分组统计。具体来说,可以先计算每个部门中的员工数量,再通过排序找到拥有最多员工的部门。
以下是完整的 SQL 查询语句:
```sql
SELECT d.deptno AS 部门编号, d.dname AS 部门名称, COUNT(e.empno) AS 员工数
FROM dept d
LEFT JOIN emp e ON d.deptno = e.deptno
GROUP BY d.deptno, d.dname
ORDER BY COUNT(e.empno) DESC
LIMIT 1;
```
#### 解析
- **表连接**:使用 `LEFT JOIN` 将 `dept` 表与 `emp` 表连接在一起[^3]。这里假设 `emp` 表中有外键字段 `deptno` 来表示所属部门。
- **分组统计**:利用 `GROUP BY` 对部门编号 (`d.deptno`) 和部门名称 (`d.dname`) 进行分组,并通过 `COUNT(e.empno)` 统计每个部门的员工人数[^1]。
- **排序取最大值**:通过 `ORDER BY COUNT(e.empno) DESC` 按照员工数量降序排列,最后使用 `LIMIT 1` 获取员工数量最多的那个部门[^4]。
此查询能够返回职员最多的部门编号及其对应的名称。
---
### 注意事项
如果存在多个部门具有相同的最高员工数量,则上述查询只会返回其中一个部门的结果。 若要获取所有符合条件的部门,可稍作调整如下:
```sql
WITH DeptCount AS (
SELECT d.deptno AS 部门编号, d.dname AS 部门名称, COUNT(e.empno) AS 员工数
FROM dept d
LEFT JOIN emp e ON d.deptno = e.deptno
GROUP BY d.deptno, d.dname
)
SELECT 部门编号, 部门名称, 员工数
FROM DeptCount
WHERE 员工数 = (SELECT MAX(员工数) FROM DeptCount);
```
这段代码引入了一个公共表达式(CTE),以便更清晰地处理多部门并列的情况。
---
阅读全文
相关推荐


















