從工資表中查找nᵗʰ最高工資
問題:我們如何有效地找到第三個或三個三個ʰ包含員工ID、員工姓名和員工列的薪資表中的最高薪資工資?
答案:
有幾種方法可以解決這個問題:
方法一:行號
SELECT Salary, EmpName FROM ( SELECT Salary, EmpName, ROW_NUMBER() OVER(ORDER BY Salary) As RowNum FROM EMPLOYEE ) As A WHERE A.RowNum IN (2,3)
此方法使用ROW_NUMBER() 函數為每個工資分配一行數字。我們選擇與所需位置對應的行號上的工資(例如,第 2、第 3)。
方法 2:子查詢
SELECT * FROM Employee Emp1 WHERE (N-1) = ( SELECT COUNT(DISTINCT(Emp2.Salary)) FROM Employee Emp2 WHERE Emp2.Salary > Emp1.Salary )
此方法使用子查詢來計算大於每個員工工資的不同工資的數量。第 n 個最高工資是針對計數等於 (n-1) 的員工。
方法 3:Top 關鍵字
SELECT TOP 1 salary FROM ( SELECT DISTINCT TOP n salary FROM employee ORDER BY salary DESC ) a ORDER BY salary
此方法使用 TOP關鍵字選擇 n 個最高薪水。最後的 ORDER BY 子句確保返回真正的第 n 個最高工資。
透過使用這些方法中的任何一個,我們可以有效地從給定的工資表中識別第三個或第 n 個最高工資。
以上是如何有效率地找出資料庫中第N個最高工資?的詳細內容。更多資訊請關注PHP中文網其他相關文章!