题
目
描
述
:
\color{blue}题目描述:
题目描述:
查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
输
入
描
述
:
\color{blue}输入描述:
输入描述:
无
输
出
描
述
:
\color{blue}输出描述:
输出描述:
思
路
分
析
:
\color{blue}思路分析:
思路分析:
这道题关键在于理解“员工入职时候的薪水”,在salaries
表中可能会有同一个员工的多条记录,比如加薪情况的发生。而衡量一个员工入职的时间就是employees
表中的hire_date
字段,salaries
表中的from_date
字段表示的是该工资的发放时间,所以应该筛选出e.hire_date = s.from_date
的工资。
代 码 实 现 : \color{blue}代码实现: 代码实现:
select e.emp_no, salary
from employees e
#内连接employees 表
inner join salaries s
#连接条件,emp_no 员工号相同,并且是入职时的工资
on e.emp_no = s.emp_no and e.hire_date = s.from_date
#最后按照emp_no 降序排列
order by e.emp_no desc;
博
客
推
荐
:
\color{blue}博客推荐:
博客推荐:
此题涉及到MySQL中的连接、排序查询,请参考我的专栏:
MySQL从入门到精通之排序查询
MySQL从入门到精通之SQL99语法中的连接查询