第n高的薪水
編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水(salary)。mssql±—±-------+
| id | salary |
±—±-------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
±—±-------+
例如上述 employee 表,n = 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。
±-----------------------+
| getnthhighestsalary(2) |
±-----------------------+
| 200 |
±-----------------------+
思路:
找第n高的薪水:實現:要想找到第n高的薪水,只需要找出現有集合其中薪水比它的子集中最大的薪水還大的個數是n的子集即可。
例如:現有集合 a =;要找出它的第3高的數,則只需要找到乙個子集b=滿足a中集合中元素大於等於b中最大元素的個數為3即可。
示例中,5,4,3一共3個元素滿足此條件,故第3高的元素就是子集b中的最大元素。
create function getnthhighestsalary(@n int) returns int as
begin
return (
/* write your t-sql query statement below. */
select max(e1.salary) from employee e1
where @n=(select count(distinct(e2.salary)) from employee e2
where e2.salary>=e1.salary));
end
注:
1.distionct表示不能是重複的2.如果count取到的數量不等於n,則會返回null
177 第N高的薪水
編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水 salary id salary 1 100 2 200 3 300 例如上述 employee 表,n 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。getnthhighestsala...
Leetcode 177 第N高的薪水
詳細見 leetcode 題目總結 sql 編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水 salary id salary 1 100 2 200 3 300 例如上述 employee 表,n 2時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 n...
(SQL)177 第N高的薪水
編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水 salary id salary 1 100 2 200 3 300 例如上述 employee 表,n 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。getnthhighestsala...