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);
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。