第八章、练习题.sql 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #第八章、练习题
  2. #1、WHERE子句可否使用组函数进行过滤?
  3. #不能
  4. #2、查询公司员工工资的最大值,最小值,平均值,总和
  5. SELECT MAX(salary) max_sal,MIN(salary) min_sal,AVG(salary) avg_sal,SUM(salary) sum_sal
  6. FROM employees;
  7. #3、查询各job_id的员工工资的最大值,最小值,平均值,总和
  8. SELECT job_id,MAX(salary) max_sal,MIN(salary) min_sal,AVG(salary) avg_sal,SUM(salary) sum_sal
  9. FROM employees
  10. GROUP BY job_id;
  11. #4、选择具有各个job_id的员工人数
  12. SELECT job_id,COUNT(job_id)
  13. FROM employees
  14. GROUP BY job_id;
  15. #老师做的
  16. SELECT job_id,COUNT(*)
  17. FROM employees
  18. GROUP BY job_id;
  19. #5、查询员工最高工资和最低工资的差距(DIFFERENCE)
  20. SELECT MAX(salary)-MIN(salary) AS DIFFERENCE
  21. FROM employees;
  22. #6、查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
  23. #我做的,不对
  24. SELECT mgr.last_name,COUNT(emp.last_name),MIN(emp.salary)
  25. FROM employees mgr JOIN employees emp
  26. ON emp.employee_id = mgr.manager_id
  27. GROUP BY mgr.manager_id
  28. HAVING MIN(emp.salary) > 6000;
  29. #老师做的
  30. SELECT manager_id,MIN(salary)
  31. FROM employees
  32. WHERE manager_id IS NOT NULL
  33. GROUP BY manager_id
  34. HAVING MIN(salary) >= 6000;
  35. #7、查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序
  36. SELECT DISTINCT e.department_id,d.department_name,d.location_id,COUNT(last_name),AVG(salary)
  37. FROM employees e,departments d
  38. WHERE e.department_id = d.department_id
  39. GROUP BY e.department_id
  40. ORDER BY AVG(salary) DESC;
  41. #老师做的
  42. SELECT d.department_name,d.location_id,COUNT(employee_id),AVG(salary)
  43. FROM departments d LEFT JOIN employees e
  44. ON d.department_id = e.department_id
  45. GROUP BY department_name,location_id
  46. ORDER BY AVG(salary) DESC;
  47. -- SELECT e.employee_id,salary,d.department_name,d.location_id
  48. -- FROM employees e RIGHT JOIN departments d
  49. -- ON e.department_id = d.department_id;
  50. #8、查询每个工种、每个部门的部门名、工种名和最低工资
  51. SELECT e.department_id,d.department_name,e.job_id,MIN(e.salary)
  52. FROM employees e RIGHT JOIN departments d
  53. ON e.department_id = d.department_id
  54. GROUP BY department_id,job_id
  55. #老师做的
  56. SELECT d.department_name,e.job_id,MIN(salary)
  57. FROM departments d LEFT JOIN employees e
  58. ON e.department_id = d.department_id
  59. GROUP BY department_name,job_id