题目描述

查找所有员工入职时候的薪水情况,给出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));

答案

select e.emp_no,s.salary from employees as e join salaries as s on e.emp_no = s.emp_no where s.from_date = e.hire_date order by e.emp_no desc

解析

这道题要求查询员工编号和薪水情况,需要注意的是要查的是入职时的薪水,因此我们要稍微注意一下两个表的结构。

第二个表salaries中的from_date和to_date代表起始日期和终止日期,代表这个时间段内这个员工的薪资情况,因此我们只要把入职时间=起始时间作为条件来进行筛选就可以了


醉后不知天在水,满船清梦压星河