以赛代练了直接。
select *
from employees
where hire_date=(select max(hire_date) from employees);
select *
from employees
where hire_date=(
select distinct hire_date
from employees
order by hire_date desc
limit 2,1
);
select s.*,d.dept_no
from salaries s
inner join dept_manager d
on s.emp_no=d.emp_no
where s.to_date='9999-01-01'
and d.to_date='9999-01-01';
select last_name,first_name,dept_no
from employees e
inner join dept_emp d
on e.emp_no=d.emp_no;
select last_name,first_name ,d.dept_no
from employees e
left join dept_emp d
on e.emp_no=d.emp_no

select e.emp_no,s.salary
from employees e
inner join salaries s
on e.emp_no =s.emp_no
where e.hire_date=s.from_date
order by e.emp_no desc
select s.emp_no,count(*) t
from salaries s
group by s.emp_no
having count(*)>15
相同仅显示一次,逆序输出
select distinct salary
from salaries s
where s.to_date='9999-01-01'
order by salary desc
distinct 效率比较低
方式二 使用groupby分类
select salary
from salaries s
where s.to_date='9999-01-01'
group by salary
order by salary desc
select d.dept_no,d.emp_no,s.salary
from dept_manager d
inner join salaries s
on d.emp_no=s.emp_no
where d.to_date='9999-01-01'
and s.to_date='9999-01-01';
关联查询得到所有manager的emp_no.从employees中排除这些。
select emp_no
from employees
where emp_no not in(
select e.emp_no
from employees e
inner join dept_manager d
on e.emp_no=d.emp_no
);
如果是自己则不显示
select e.emp_no,m.emp_no
from dept_emp e
inner join dept_manager m
on e.dept_no=m.dept_no
where e.emp_no<>m.emp_no
and e.to_date="9999-01-01"
and m.to_date="9999-01-01";