#第八章、练习题 #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