牛客線上程式設計練習:SQL27_較難
阿新 • • 發佈:2021-02-12
SQL練習:SQL27_較難
題目: 給出每個員工每年薪水漲幅超過5000的員工編號emp_no、薪水變更開始日期from_date以及薪水漲幅值salary_growth,並按照salary_growth逆序排列。
提示:在sqlite中獲取datetime時間對應的年份函式為strftime(’%Y’, to_date)
(資料保證每個員工的每條薪水記錄to_date-from_date=1年,而且同一員工的下一條薪水記錄from_data=上一條薪水記錄的to_data)
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 S1.emp_no,S1.from_date,S1.salary-S2.salary salary_growth
FROM salaries S1 # 今年薪資的表S1,明年薪資的表S2
JOIN salaries S2 ON S1.emp_no = S2.emp_no AND S1.from_date = S2.to_date
WHERE S1.salary-S2.salary > 5000
ORDER BY salary_growth DESC
- 個人整理的筆記,僅供學習使用,有問題麻煩指正。
- 題目來源於:牛客網