sql测试题

dept表

empt表

1. 查询部门表中的部门名和所在城市

2. 查询有补贴的员工信息

3. 查询部门号为10的部门名、雇员名以及薪资

4. 查询所有员工的年薪,年薪低到高排序

5. 查询薪资第2到第8的员工

6. 查询所有员工姓名,工号,管理者的姓名和工号

7. 查询各个job员工的工资最大值,最小值,均值,综合

8. 查询各部门各岗位的平均薪资和最高薪资

9. 查询员工姓名中第二个字母是A

10. 查询薪水比SMITH高的所有员工

11. 查询各个管理者属下员工的最低工资,其中最低工资不能低于800,没有管理者的员工不计算在内

12. 薪水高于工资平均的所有员工

13. 查询和姓名中包含字母u的员工在相同部门的员工号和姓名

14. 各个部门中工资大于1500的员工人数

15. 查询所在部门中平均工资高于1500的员工名

16. 查询各个部门工资最高的员工信息:名字、部门号、工资

17. 哪个部门的平均工资是最高的?列出部门和平均工资

18. 查询部门名称和这些部门的员工信息,同时查询哪些没有员工的部门,并利用部门编号进行排序


1. 查询部门表中的部门名和所在城市
SELECT dname,loc FROM dept;

2. 查询有补贴的员工信息
SELECT *
FROM emp
WHERE comm IS NOT NULL AND comm > 0

3. 查询部门号为10的部门名、雇员名以及薪资
SELECT dept.dname, emp.ename, emp.sal
FROM dept,emp
WHERE dept.deptno = emp.deptno AND dept.deptno = 10;

4. 查询所有员工的年薪,年薪低到高排序
SELECT ename,sal * 12 + IFNULL(comm,0) 年薪
FROM emp
ORDER BY 年薪 ASC

5. 查询薪资第2到第8的员工
SELECT ename,sal
FROM emp
ORDER BY sal DESC
LIMIT 1,7

6. 查询所有员工姓名,工号,管理者的姓名和工号
SELECT e1.ename, e1.empno,e2.ename,e2.empno
FROM emp e1 LEFT JOIN emp e2
ON e1.mgr = e2.empno;

7. 查询各个job员工的工资最大值,最小值,均值,综合
SELECT job,MAX(sal),MIN(sal),AVG(sal),SUM(sal)
FROM emp
GROUP BY job; 

8. 查询各部门各岗位的平均薪资和最高薪资
SELECT deptno,job,AVG(sal),MAX(sal)
FROM emp
GROUP BY deptno,job

9. 查询员工姓名中第二个字母是A
SELECT ename
FROM emp
WHERE ename LIKE '_A%'

10. 查询薪水比SMITH高的所有员工
SELECT ename,sal
FROM emp
WHERE sal > (
    SELECT sal
    FROM emp
    WHERE ename = 'smith')

11. 查询各个管理者属下员工的最低工资,其中最低工资不能低于800,没有管理者的员工不计算在内
SELECT mgr, MIN(sal)
FROM emp
WHERE mgr IS NOT NULL
GROUP BY mgr
HAVING MIN(sal) > 800

SELECT mgr, MIN(sal)
FROM emp
WHERE mgr IS NOT NULL AND sal > 800
GROUP BY mgr

12. 薪水高于工资平均的所有员工
SELECT ename,sal
FROM emp
WHERE sal > (
    SELECT AVG(sal)
    FROM emp)

13. 查询和姓名中包含字母u的员工在相同部门的员工号和姓名
SELECT empno,ename
FROM emp
WHERE deptno IN (
    SELECT deptno
    FROM emp
    WHERE ename LIKE '%u%')

14. 各个部门中工资大于1500的员工人数
SELECT deptno, COUNT(ename)
FROM emp
WHERE sal > 1500
GROUP BY deptno

15. 查询所在部门中平均工资高于1500的员工名
SELECT ename
FROM emp
WHERE deptno IN (
    SELECT deptno
    FROM emp
    GROUP BY deptno
    HAVING AVG(sal) > 1500)

16. 查询各个部门工资最高的员工信息:名字、部门号、工资
SELECT ename,deptno,sal
FROM emp
WHERE (deptno, sal) IN (
    SELECT deptno,MAX(sal)
    FROM emp
    GROUP BY deptno)

17. 哪个部门的平均工资是最高的?列出部门和平均工资
SELECT deptno, AVG(sal)
FROM emp
GROUP BY deptno
ORDER BY AVG(sal) DESC
LIMIT 1;

SELECT b.deptno,b.sal
FROM (SELECT deptno, AVG(sal) AS sal FROM emp GROUP BY deptno) b
WHERE b.sal = (
    SELECT MAX(a.sal) 
    FROM (SELECT AVG(sal) AS sal FROM emp GROUP BY deptno) a)

18. 查询部门名称和这些部门的员工信息,同时查询哪些没有员工的部门,并利用部门编号进行排序
SELECT dept.dname,emp.*
FROM dept LEFT JOIN emp
ON dept.deptno = emp.deptno
ORDER BY dept.deptno

猜你喜欢

转载自blog.csdn.net/qq_36194262/article/details/83246973