123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #第八章、练习题
- #1、WHERE子句可否使用组函数进行过滤?
- #不能
- #2、查询公司员工工资的最大值,最小值,平均值,总和
- SELECT MAX(salary) max_sal,MIN(salary) min_sal,AVG(salary) avg_sal,SUM(salary) sum_sal
- FROM employees;
- #3、查询各job_id的员工工资的最大值,最小值,平均值,总和
- SELECT job_id,MAX(salary) max_sal,MIN(salary) min_sal,AVG(salary) avg_sal,SUM(salary) sum_sal
- FROM employees
- GROUP BY job_id;
- #4、选择具有各个job_id的员工人数
- SELECT job_id,COUNT(job_id)
- FROM employees
- GROUP BY job_id;
- #老师做的
- SELECT job_id,COUNT(*)
- FROM employees
- GROUP BY job_id;
- #5、查询员工最高工资和最低工资的差距(DIFFERENCE)
- SELECT MAX(salary)-MIN(salary) AS DIFFERENCE
- FROM employees;
- #6、查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
- #我做的,不对
- SELECT mgr.last_name,COUNT(emp.last_name),MIN(emp.salary)
- FROM employees mgr JOIN employees emp
- ON emp.employee_id = mgr.manager_id
- GROUP BY mgr.manager_id
- HAVING MIN(emp.salary) > 6000;
- #老师做的
- SELECT manager_id,MIN(salary)
- FROM employees
- WHERE manager_id IS NOT NULL
- GROUP BY manager_id
- HAVING MIN(salary) >= 6000;
- #7、查询所有部门的名字,location_id,员工数量和平均工资,并按平均工资降序
- SELECT DISTINCT e.department_id,d.department_name,d.location_id,COUNT(last_name),AVG(salary)
- FROM employees e,departments d
- WHERE e.department_id = d.department_id
- GROUP BY e.department_id
- ORDER BY AVG(salary) DESC;
- #老师做的
- SELECT d.department_name,d.location_id,COUNT(employee_id),AVG(salary)
- FROM departments d LEFT JOIN employees e
- ON d.department_id = e.department_id
- GROUP BY department_name,location_id
- ORDER BY AVG(salary) DESC;
- -- SELECT e.employee_id,salary,d.department_name,d.location_id
- -- FROM employees e RIGHT JOIN departments d
- -- ON e.department_id = d.department_id;
- #8、查询每个工种、每个部门的部门名、工种名和最低工资
- SELECT e.department_id,d.department_name,e.job_id,MIN(e.salary)
- FROM employees e RIGHT JOIN departments d
- ON e.department_id = d.department_id
- GROUP BY department_id,job_id
- #老师做的
- SELECT d.department_name,e.job_id,MIN(salary)
- FROM departments d LEFT JOIN employees e
- ON e.department_id = d.department_id
- GROUP BY department_name,job_id
|