【359天】我愛刷題系列118(2018.01.30)

叨叨兩句

  1. ~

SQL習題013

1

題目描述
查找員工編號emp_now爲10001其自入職以來的薪水salary漲幅值growth
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));測試

本題嚴謹的思路以下:
一、先分別找到emp_no=10001的員工的第一次工資記錄與最後一次工資記錄
二、再將最後一次工資記錄減去第一次工資記錄獲得入職以來salary的漲幅,最後用別名growth代替

SELECT ( 
(SELECT salary FROM salaries WHERE emp_no = 10001 ORDER BY to_date DESC LIMIT 1) -
(SELECT salary FROM salaries WHERE emp_no = 10001 ORDER BY to_date ASC LIMIT 1)
) AS growth

本題的另外一種解法也能經過測試,但實際上不嚴謹,只有在員工最後一條工資記錄爲最大值時成立,若是最後一次的工資調整爲降薪,則此思路通不過。具體思路以下:
一、直接找到emp_no=10001的員工的工資記錄,將其最大工資減去最小工資獲得漲幅

SELECT (MAX(salary)-MIN(salary)) AS growth 
FROM salaries WHERE emp_no = '10001'
相關文章
相關標籤/搜索