个人提交答案汇总,part1
解答比较繁琐,有建议或好的想法欢迎评论区指出探讨=w=
1、查找最晚入职员工的所有信息
select *
from employees
where hire_date = (
select max(hire_date) from employees);
2、查找入职员工时间排名倒数第三的员工所有信息
//第一种(注意rank的用法)
select * from employees
where hire_date == (
select hire_date from (
select rank() over( order by hire_date desc ) as rank, hire_date
from employees ) a
where rank = 3
)
//第二种(注意limit的用法)
select * from employees order by hire_date desc limit 2,1;
3、查找各个部门领导薪水详情以及其对应部门编号dept_no
select salaries.emp_no as emp_no,
salaries.salary as salary,
salaries.from_date as from_date,
salaries.to_date as to_date,
dept_manager.dept_no as dept_no
from salaries, dept_manager
where salaries.emp_no = dept_manager.emp_no
order by salaries.emp_no
4、查找所有已经分配部门的员工的last_name和first_name以及dept_no
select employees.last_name,
employees.first_name,
dept_emp.dept_no
from employees, dept_emp
where employees.emp_no = dept_emp.emp_no
5、查找所有已经分配部门的员工的last_name和first_name以及dept_no
select employees.last_name,
employees.first_name,
dept_emp.dept_no
from employees left join dept_emp
on employees.emp_no = dept_emp.emp_no
7、查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t
select emp_no, t
from(
select emp_no, count(*) as t
from salaries
group by emp_no
)
where t > 15
8、找出所有员工具体的薪水salary情况
select distinct salary
from salaries
order by salary desc
10、找出所有非部门领导的员工emp_no
select emp_no
from employees
where emp_no not in(
select emp_no
from dept_manager
)
11、获取所有的员工和员工对应的经理
select emp.emp_no, man.emp_no
from dept_emp emp join dept_manager man
on emp.emp_no <> man.emp_no and emp.dept_no = man.dept_no
12、获取所有部门中员工薪水最高的相关信息
select dep.dept_no, dep.emp_no, max(sal.salary)
from dept_emp dep join salaries sal
on dep.emp_no = sal.emp_no
group by dep.dept_no
15、查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息
select * from employees
where (emp_no % 2) <> 0 and last_name <> 'Mary'
order by hire_date desc
16、统计出各个title类型对应的员工薪水对应的平均工资avg
select titles.title,
avg(salaries.salary)
from titles, salaries
where titles.emp_no = salaries.emp_no
group by titles.title
order by avg(salaries.salary);
17、获取薪水第二多的员工的emp_no以及其对应的薪水salary
select emp_no, salary
from salaries
order by salary desc
limit 1,1;
18、查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成
select employees.emp_no,
salaries.salary,
employees.last_name,
employees.first_name
from employees, salaries
where employees.emp_no = salaries.emp_no and
salaries.salary in (
select max(salary) from salaries
where salary <>
(
select max(salary)
from salaries
)
)
19、查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工
select employees.last_name,
employees.first_name,
departments.dept_name
from (employees left join dept_emp
on employees.emp_no = dept_emp.emp_no)
left join departments on departments.dept_no = dept_emp.dept_no