MySQL综合练习:部门工资统计与员工信息查询

需积分: 0 3 下载量 23 浏览量 更新于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查询语句的使用有更深入的了解。