#1.查询和Zlotkey相同部门的员工姓名和工资SELECT last_name ,salary
from employees
where department_id =(select department_id
FROM employees
where last_name ='Zlotkey');#2.查询工资比公司平均工资高的员工的员工号、姓名和工资SELECT employee_id,last_name,salary
from employees
where salary >(selectAVG(salary)FROM employees
);#3.查询工资大于所有job_id='SA_MAN'的员工的工资的员工的last_name,job_id,salarySELECT last_name,job_id,salary
FROM employees
where salary >ALL(SELECT salary
FROM employees
WHERE job_id ='SA_MAN')#4.查询姓名中包含字母u的员工所在相同部门的员工的员工号和姓名SELECT employee_id,last_name
FROM employees
WHERE department_id IN(SELECTDISTINCT department_id
FROM employees
where last_name LIKE'%u%')#5.查询部门的location_id为1700的部门工作的员工的工作号SELECTDISTINCT e.department_id
FROM employees e
LEFTJOIN departments d
on e.department_id=d.department_id
WHERE location_id =1700SELECT employee_id
FROM employees
WHERE department_id in(SELECTDISTINCT department_id
FROM departments
WHERE location_id =1700)#6.查询管理者是King的员工姓名和工资SELECT last_name,salary
FROM employees
WHERE manager_id IN(SELECT employee_id
FROM employees
WHERE last_name ='King')#7.查询工资最低的员工信息:last_name,salarySELECT last_name,salary
FROM employees
WHERE salary =(SELECTMIN(salary)FROM employees
)#8.查询平均工资最低的部门信息SELECT*FROM departments
WHERE department_id =(SELECTDISTINCT department_id
FROM employees
GROUPBY department_id
HAVINGAVG(salary)=(SELECTMIN(avg_salary)FROM(SELECTAVG(salary) avg_salary
FROM employees
GROUPBY department_id
) avg
))#优化,减少一层子查询SELECT*FROM departments
WHERE department_id =(SELECTDISTINCT department_id
FROM employees
GROUPBY department_id
HAVINGAVG(salary)<=ALL(SELECTAVG(salary) avg_salary
FROM employees
GROUPBY department_id
))#LIMIT方式SELECT*FROM departments
WHERE department_id =(SELECTDISTINCT department_id
FROM employees
GROUPBY department_id
HAVINGAVG(salary)=(SELECTAVG(salary) avg_salary
FROM employees
GROUPBY department_id
ORDERBY avg_salary ASCLIMIT0,1))#其他方式SELECT d.*FROM departments d,(SELECT department_id,AVG(salary) avg_salary
FROM employees
GROUPBY department_id
ORDERBY avg_salary ASCLIMIT0,1) t_avg
WHERE d.department_id = t_avg.department_id
#9.查询平均工资最低的部门信息和该部门的平均工资(相关子查询)SELECT d.*,(SELECTAVG(salary)FROM employees WHERE department_id = d.department_id) avg_sal
FROM departments d
WHERE department_id =(SELECTDISTINCT department_id
FROM employees
GROUPBY department_id
HAVINGAVG(salary)=(SELECTAVG(salary) avg_salary
FROM employees
GROUPBY department_id
ORDERBY avg_salary ASCLIMIT0,1))SELECT d.*,avg_salary
FROM departments d,(SELECT department_id,AVG(salary) avg_salary
FROM employees
GROUPBY department_id
ORDERBY avg_salary ASCLIMIT0,1) t_avg
WHERE d.department_id = t_avg.department_id
#10.查询平均工资最高的job信息SELECT j.*FROM jobs j,(SELECT job_id,AVG(salary) avg_salary
FROM employees
GROUPBY job_id
ORDERBY avg_salary DESCLIMIT0,1) t_avg
WHERE j.job_id = t_avg.job_id
#11.查询平均工资高于公司平均工资的部门有哪些SELECT department_id
FROM employees
WHERE department_id ISNOTNULLGROUPBY department_id
HAVINGAVG(salary)>(SELECTAVG(salary)FROM employees
)#12.查询出公司中所有manager的详细信息#自连接SELECTDISTINCT m.*FROM employees e,employees m
WHERE e.manager_id = m.employee_id
#子查询SELECT*FROM employees
WHERE employee_id IN(SELECTDISTINCT manager_id
FROM employees
)#EXISTS SELECT*FROM employees e
WHEREEXISTS(SELECT*FROM employees m
WHERE e.employee_id = m.manager_id
)#13.各个部门中 最高工资中最低的那个部门的 最低工资是多少SELECTMIN(salary)FROM employees
GROUPBY department_id
HAVING department_id =(SELECT department_id
FROM employees
WHERE department_id ISNOTNULLGROUPBY department_id
ORDERBYMAX(salary)ASCLIMIT0,1)#14.查询平均工资最高的部门的manager的详细信息SELECT*FROM employees
WHERE employee_id =(SELECT manager_id
FROM departments
WHERE department_id =(SELECT department_id
FROM employees
WHERE department_id ISNOTNULLGROUPBY department_id
ORDERBYMAX(salary)DESCLIMIT0,1))#15.查询部门的部门号,其中不包括job_id是'ST_CLERK'的部门号SELECT department_id
FROM departments
WHERE department_id <>(SELECTDISTINCT department_id
FROM employees
WHERE job_id ='ST_CLERK')SELECT department_id
FROM departments d
WHERENOTEXISTS(SELECTDISTINCT department_id
FROM employees e
WHERE d.department_id = e.department_id
AND job_id ='ST_CLERK')#16.选择所有没有管理者的员工的last_nameSELECT last_name
FROM employees e1
WHERENOTEXISTS(SELECT*FROM employees e2
WHERE e1.manager_id = e2.employee_id
)#17.查询员工号、姓名、雇佣时间、工资,其中员工的管理者为'De Haan'SELECT employee_id,last_name,hire_date,salary
FROM employees
WHERE manager_id =(SELECT employee_id
FROM employees
WHERE last_name ='De Haan')#18.查询各部门中工资比本部门平均工资高的员工的员工号、姓名和工资(相关子查询)#相关子查询SELECT employee_id,last_name,salary
FROM employees e1
WHERE salary >(SELECTAVG(salary)FROM employees e2
WHERE department_id = e1.department_id
)#在FROM中声明子查询SELECT employee_id,last_name,salary
FROM employees e1,(SELECT department_id,AVG(salary) avg_salary
FROM employees
GROUPBY department_id
) e2
WHERE e1.department_id = e2.department_id
AND e1.salary > e2.avg_salary
#19.查询每个部门下的部门人数大于5的部门SELECT department_name
FROM departments d
WHERE5<(SELECTCOUNT(*)FROM employees e
WHERE d.department_id = e.department_id
)SELECT department_name
FROM departments
WHERE department_id IN(SELECT department_id
FROM employees
GROUPBY department_id
HAVINGCOUNT(*)>5)#20.查询每个国家下的部门个数大于2的国家编号 SELECT country_id
FROM locations l
WHERE2<(SELECTCOUNT(*)FROM departments d
WHERE l.location_id=d.location_id
)SELECT location_id,COUNT(*) a
FROM departments
GROUPBY location_id