2014-09-13 75 views
0
SELECT * 
FROM Employees Emp1 
WHERE (n) = (SELECT COUNT(DISTINCT(Emp2.Salary)) 
       FROM Employees Emp2 
       WHERE Emp2.Salary >= Emp1.Salary) 
+1

SQL的「味道」是什麼?我從來沒有見過類似的東西......這是甲骨文? MySQL的? PostgreSQL的? SQLite的?還有別的嗎? – 2014-09-13 11:51:34

+1

這是Mysql Query從表 – vijay 2014-09-13 11:53:50

+1

中找到第n個薪水我的搞笑猜測:(n)是表中的一列 – Nabin 2014-09-13 11:55:30

回答

1

我認爲最重要的是子查詢。它返回大於或等於當前的Emp1.Salary的不同工資的數量。返回的這個值等於員工的薪水等級。

假設您是第三大工資10000的員工。子查詢將計算大於您的不同工資的數量,即2加1(2+1=3)。另外還有一個員工計算,包括你的自己,工資等於10000.這是因爲在WHERE條款中使用了>=

話雖如此,完整意義上說,整個查詢選擇基於他的工資排名的員工。