SQL练习
2019-03-07 本文已影响1人
apricoter
查找入职员工时间排名倒数第三的员工所有信息
select * from employees
order by hire_date desc limit 2,1
#desc表示降序,从高到低,即时间最晚的最高,在最前面
#检索从第2行开始向前检索1条数据
查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no
select salaries.emp_no,salaries.salary,salaries.from_date,salaries.to_date,dept_manager.dept_no
#各变量名之前指明来自何表
from salaries inner join dept_manager
#结果中salaries在前,dept-no在后,则salaries为主表,顺序不可错
on(dept_manager.emp_no=salaries.emp_no)
where dept_manager.to_date='9999-01-01' and salaries.to_date='9999-01-01'
#条件查询,同时对两个表都要声明
查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工
select last_name,first_name,dept_no
from employees left join dept_emp
#INNER JOIN 两边表同时有对应的数据,即任何一边缺失数据就不显示。
#LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。
#RIGHT JOIN 会读取右边数据表的全部数据,即便左边表无对应数据。
on(employees.emp_no=dept_emp.emp_no)
查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序
select a.emp_no,b.salary
from employees a
inner join salaries b
#emp_no在前,主表为employees
#表别名可不加AS
on a.emp_no=b.emp_no and a.hire_date=b.from_date
order by a.emp_no desc
查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
select emp_no,count(emp_no) as t
from salaries
group by emp_no
HAVING t > 15