數據庫SQL實戰(牛客網):查找薪水漲幅超過15次的員工號emp_no以及其對應的漲幅次

查找薪水漲幅超過15次的員工號emp_no以及其對應的漲幅次數t
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 emp_no , count(emp_no) as t
from salaries
group by emp_no having t > 15;

1、用COUNT()函數和GROUP BY語句可以統計同一emp_no值的記錄條數
2、根據題意,輸出的漲幅次數爲t,故用AS語句將COUNT(emp_no)的值轉換爲t
3、由於COUNT()函數不可用於WHERE語句中,故使用HAVING語句來限定t>15的條件
4、最後存在一個理解誤區,漲幅超過15次,salaries中相應的記錄數應該超過16(從第2條記錄開始算作第1次漲幅),不過題目爲了簡單起見,將第1條記錄當作第1次漲幅,所以令t>15即可
/** 注意: 嚴格來說,下一條salary高於本條纔算漲幅,但本題只要出現了一條記錄就算一次漲幅,salary相同可以理解爲漲幅爲0,salary變少理解爲漲幅爲負 **/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章