这是SQL今日一题的第5篇
题目描述
查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序(请注意,一个员工可能有多次涨薪的情况)
这题要用到employees表和salaries表,两个表以emp_no为公共字段。


方法1
# 左连接(也可以换成inner join)
select e.emp_no,s.salary from employees e
left join salaries s
on e.emp_no = s.emp_no
where e.hire_date = s.from_date order by e.emp_no desc
# where连接
select e.emp_no,s.salary from employees e,salaries s
where e.emp_no = s.emp_no
and e.hire_date = s.from_date order by e.emp_no desc
1、首先要明确,employees表中的emp_no肯定是唯一的,即一个员工对应一条信息,但salaries表中的emp_no可能不唯一,因为员工存在多次涨薪的情况。
2、然后要思考入职时的薪水怎么取,对了,只要将salaries表的from_date等于employees表的hire_date就可以了,再将两个表连接(左连接或内连接或where都可以)
3、注意还要按emp_no降序排列
方法2
select emp_no,salary from salaries
group by emp_no
having from_date = min(from_date)
order by emp_no desc
这是一种不需要表连接的操作
1、入职时的薪水一定是salaries表中一个员工的from_date最小的日期对应的薪水,所以先按照emp_no分组
2、再用having做分组后的条件限制,让from_date等于from_date里的最小值
3、最后再对emp_no降序排列即可
知识点
group by 子句:
-
group by子句用来创建分组,
-
group by子句要写在where后,order by 前
having 过滤分组:
-
having过滤的是分组,where过滤的是行
-
having在分组后过滤,where在分组前过滤
猜你喜欢:
SQL今日一题(4):表连接
学习SQL:MySQL必知必会
数据分析都有哪些岗位?
Python实现LRFM模型分析客户价值
@ 作者:可乐
@ 公众号/知乎专栏/头条/简书:可乐的数据分析之路
@加个人微信:data_cola,备注:进群,拉你入 可乐的数据分析群 和各行各业的小伙伴交流探讨数据分析相关内容


评论(0)