1、取得每个部门最高薪水的人员名称
解题思路:通过分组查询,找出每个部门的最高薪水,然后与员工表连接,找到对应的员工名称。
SQL语句:
SELECT d.DNAME, e.ENAME FROM DEPT d JOIN EMP e ON d.DEPTNO = e.DEPTNO WHERE e.SAL IN (SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO);
2、哪些人的薪水在部门的平均薪水之上
解题思路:计算每个部门的平均薪水,再找出那些薪水高于本部门平均薪水的员工。
SQL语句:
SELECT e.ENAME, e.SAL FROM EMP e WHERE e.SAL > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO = e.DEPTNO);
3、取得部门中(所有人的)平均的薪水等级
解题思路:先求出每个部门的平均薪水,然后再根据薪水等级表查找对应的等级。
SQL语句:
SELECT d.DNAME, AVG(e.SAL) AS AvgSalary, sg.GRADE FROM DEPT d JOIN EMP e ON d.DEPTNO = e.DEPTNO JOIN SALGRADE sg ON e.SAL BETWEEN sg.LOSAL AND sg.HISAL GROUP BY d.DNAME;
4、不准用组函数(Max),取得最高薪水
解题思路:使用子查询,逐步缩小范围,找到最高薪水。
SQL语句:
SELECT e.ENAME, e.SAL FROM EMP e WHERE e.SAL = (SELECT MAX(SAL) FROM EMP WHERE DEPTNO = e.DEPTNO);
5、取得平均薪水最高的部门的部门编号
解题思路:按部门计算平均薪水,并按平均薪水降序排列,取第一条记录的部门编号。
SQL语句:
SELECT DEPTNO FROM EMP GROUP BY DEPTNO ORDER BY AVG(SAL) DESC LIMIT 1;
6、取得平均薪水最高的部门的部门名称
解题思路:在上一步的基础上,通过部门编号找到对应的部门名称。
SQL语句:
SELECT d.DNAME FROM DEPT d JOIN ( SELECT DEPTNO, AVG(SAL) AS AvgSalary FROM EMP GROUP BY DEPTNO ORDER BY AvgSalary DESC LIMIT 1 ) AS subq ON d.DEPTNO = subq.DEPTNO;
7、求平均薪水的等级最低的部门的部门名称
解题思路:按部门计算平均薪水,并与薪水等级表连接,找到最低等级的部门名称。
SQL语句:
SELECT d.DNAME, sg.GRADE FROM DEPT d JOIN ( SELECT DEPTNO, AVG(SAL) AS AvgSalary FROM EMP GROUP BY DEPTNO ORDER BY AvgSalary ASC LIMIT 1 ) AS subq ON d.DEPTNO = subq.DEPTNO JOIN SALGRADE sg ON subq.AvgSalary BETWEEN sg.LOSAL AND sg.HISAL;
8、**取得比普通员工(员工代码没有在 mgr 字段上出现的) 的最高薪水还要高的领导人姓名(*)
解题思路:找出普通员工的最高薪水,然后找出薪水高于此值的领导人。
SQL语句:
SELECT e.ENAME FROM EMP e WHERE e.MGR IS NOT NULL AND e.SAL > (SELECT MAX(SAL) FROM EMP WHERE MGR IS NULL);
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1234632.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复