列出部门的平均工资大于3000的部门的名称、编号、部门的平均工资
时间: 2025-03-21 11:05:25 浏览: 31
### SQL 查询实现
为了查询平均工资大于 3000 的部门及其相关信息,可以按照以下方式构建 SQL 查询:
#### 查询需求分析
1. **目标字段**:需要获取部门名称 (`deptname`) 和其对应的平均工资、最高工资以及最低工资。
2. **条件过滤**:仅保留那些平均工资超过 3000 的部门。
3. **排序规则**:最终结果需按 `deptid` 排序。
以下是完整的 SQL 实现代码:
```sql
SELECT
d.deptid AS 部门编号,
d.deptname AS 部门名称,
ROUND(AVG(s.salary), 2) AS 平均工资,
MAX(s.salary) AS 最高工资,
MIN(s.salary) AS 最低工资
FROM
salary s
JOIN
dept d ON s.deptid = d.deptid
GROUP BY
d.deptid, d.deptname
HAVING
AVG(s.salary) > 3000
ORDER BY
d.deptid;
```
---
#### 解析说明
1. 使用 `JOIN` 将 `salary` 表和 `dept` 表连接起来,通过共同的 `deptid` 字段建立关联关系[^1]。
2. 利用聚合函数计算各部门的相关数据:
- `AVG(s.salary)` 计算部门内的平均工资;
- `MAX(s.salary)` 获取部门中的最高工资;
- `MIN(s.salary)` 获取部门中的最低工资[^2]。
3. 添加 `ROUND()` 函数对平均工资进行两位小数的四舍五入处理,提升可读性[^3]。
4. 在 `GROUP BY` 子句中指定分组依据为 `d.deptid` 和 `d.deptname`,确保每条记录对应唯一的一个部门[^4]。
5. 使用 `HAVING` 过滤掉不符合条件的数据行——即只保留平均工资大于 3000 的部门[^5]。
6. 最终利用 `ORDER BY d.deptid` 按照部门 ID 升序排列输出结果。
---
### 输出样例
假设输入数据如下所示,则执行上述 SQL 后可能得到的结果为:
| 部门编号 | 部门名称 | 平均工资 | 最高工资 | 最低工资 |
|----------|----------|-----------|-----------|-----------|
| 1 | 开发部 | 4500 | 5000 | 4000 |
---
阅读全文
相关推荐


















