牛客SQL練習第21題

雙人與餘發表於2020-11-02

題目描述

查詢所有員工自入職以來的薪水漲幅情況,給出員工編號emp_no以及其對應的薪水漲幅growth,並按照growth進行升序
(注:可能有employees表和salaries表裡存在記錄的員工,有對應的員工編號和漲薪記錄,但是已經離職了,離職的員工salaries表的最新的to_date!=‘9999-01-01’,這樣的資料不顯示在查詢結果裡面)

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,
	s1.salary-s2.salary
from 
	employees e 
	join salaries s1 on e.emp_no=s1.emp_no and s1.to_date="9999-01-01"
	join salaries s2 on e.emp_no=s2.emp_no and e.hire_date=s2.from_date
order by growth

相關文章