【352天】我愛刷題系列111(2018.01.23)

@(一隻心中無碼的程序員)專欄程序員

叨叨兩句

  1. ~

SQL習題006

查找薪水漲幅超過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));函數

此題應注意如下四點:
一、用COUNT()函數和GROUP BY語句能夠統計同一emp_no值的記錄條數
二、根據題意,輸出的漲幅次數爲t,故用AS語句將COUNT(emp_no)的值轉換爲t
三、因爲WHERE後不可跟COUNT()函數,故用HAVING語句來限定t>15的條件
四、最後存在一個理解誤區,漲幅超過15次,salaries中相應的記錄數應該超過16(從第2條記錄開始算做第1次漲幅),不過題目爲了簡單起見,將第1條記錄看成第1次漲幅,因此令t>15便可
/**  注意: 嚴格來講,下一條salary高於本條纔算漲幅,但本題只要出現了一條記錄就算一次漲幅,salary相同能夠理解爲漲幅爲0,salary變少理解爲漲幅爲負 **/
1
2
SELECT emp_no, COUNT(emp_no) AS t FROM salaries 
GROUP BY emp_no HAVING t > 15
相關文章
相關標籤/搜索