MySQL综合练习:部门工资统计与员工信息查询
需积分: 0 122 浏览量
更新于2024-01-24
收藏 939KB PDF 举报
本文主要总结了一个MySQL综合练习中提到的几个问题及其答案。在这个练习中,涉及到了两个数据表:dept和emp。
首先,第一个问题要求列出emp表中各部门的部门号、最高工资和最低工资。为了解答这个问题,我们可以使用如下的SQL查询语句:
```
SELECT deptno, MAX(sal) AS 最高工资, MIN(sal) AS 最低工资
FROM emp
GROUP BY deptno;
```
这个查询语句会根据部门号对员工表进行分组,并且计算出每个部门的最高工资和最低工资。
接下来,第二个问题要求列出emp表中各部门job含有'REP'的员工的部门号、最低工资和最高工资。为了解答这个问题,我们可以使用如下的SQL查询语句:
```
SELECT deptno, MIN(sal) AS 最低工资, MAX(sal) AS 最高工资
FROM emp
WHERE job LIKE '%REP%'
GROUP BY deptno;
```
这个查询语句会筛选出在job字段中含有'REP'的员工,并且根据部门号对结果进行分组,并且计算出每个部门的最低工资和最高工资。
第三个问题要求在emp表中找出最低工资小于7000的部门中job为'SA_REP'的员工的部门号、最低工资和最高工资。为了解答这个问题,我们可以使用如下的SQL查询语句:
```
SELECT deptno, MIN(sal) AS 最低工资, MAX(sal) AS 最高工资
FROM emp
WHERE sal < 7000 AND job = 'SA_REP'
GROUP BY deptno;
```
这个查询语句会筛选出工资小于7000并且job为'SA_REP'的员工,并且根据部门号对结果进行分组,并且计算出每个部门的最低工资和最高工资。
第四个问题要求给出第三个问题的另一个解决方法。为了解答这个问题,我们可以使用如下的SQL查询语句:
```
SELECT deptno, MIN(sal) AS 最低工资, MAX(sal) AS 最高工资
FROM emp
WHERE deptno IN (
SELECT deptno
FROM emp
WHERE sal < 7000 AND job = 'SA_REP'
)
GROUP BY deptno;
```
这个查询语句中,首先会筛选出工资小于7000并且job为'SA_REP'的员工所在的部门号。然后,再根据这些部门号对员工表进行筛选,并且计算出每个部门的最低工资和最高工资。
第五个问题要求根据部门号由高而低,工资由低而高的顺序,列出每个员工的姓名、部门号和工资。为了解答这个问题,我们可以使用如下的SQL查询语句:
```
SELECT ename, deptno, sal
FROM emp
ORDER BY deptno DESC, sal ASC;
```
这个查询语句会根据部门号进行降序排列,如果部门号相同,那么再根据工资进行升序排列,最终得到每个员工的姓名、部门号和工资。
最后,第六个问题要求列出'Abel'所在部门中每个员工的姓名和部门号。为了解答这个问题,我们可以使用如下的SQL查询语句:
```
SELECT ename, deptno
FROM emp
WHERE deptno = (
SELECT deptno
FROM emp
WHERE ename = 'Abel'
);
```
这个查询语句中,首先会通过子查询找到'Abel'所在的部门号。然后,再根据这个部门号筛选出对应部门的每个员工的姓名和部门号。
综上所述,本文总结了MySQL综合练习中涉及的几个问题及其答案。通过这些问题的解答,可以对MySQL查询语句的使用有更深入的了解。
139 浏览量
2023-03-01 上传
742 浏览量
518 浏览量
2021-10-10 上传
290 浏览量
2021-10-30 上传