PL/SQLHive/Sql

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
上一篇下一篇

猜你喜欢

热点阅读