0
SELECT *
FROM Employees Emp1
WHERE (n) = (SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employees Emp2
WHERE Emp2.Salary >= Emp1.Salary)
SELECT *
FROM Employees Emp1
WHERE (n) = (SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employees Emp2
WHERE Emp2.Salary >= Emp1.Salary)
我認爲最重要的是子查詢。它返回大於或等於當前的Emp1.Salary
的不同工資的數量。返回的這個值等於員工的薪水等級。
假設您是第三大工資10000的員工。子查詢將計算大於您的不同工資的數量,即2
加1(2+1=3
)。另外還有一個員工計算,包括你的自己,工資等於10000.這是因爲在WHERE
條款中使用了>=
。
話雖如此,完整意義上說,整個查詢選擇基於他的工資排名的員工。
SQL的「味道」是什麼?我從來沒有見過類似的東西......這是甲骨文? MySQL的? PostgreSQL的? SQLite的?還有別的嗎? – 2014-09-13 11:51:34
這是Mysql Query從表 – vijay 2014-09-13 11:53:50
中找到第n個薪水我的搞笑猜測:(n)是表中的一列 – Nabin 2014-09-13 11:55:30