我需要找出table
中每個部門的員工的3rd maximum salary
。如果不存在3rd maximum salary
則顯示2nd maximum salary
。如果沒有2nd maximum salary
存在,那麼找到highest salary
。如何在sql-server
中實現這個結果?根據表格數據查找每個部門的第三最大工資
的table
結構如下
create table employee1(empid int, empname varchar(10), deptid int, salary money)
insert into employee1
select 1,'a',1, 1000
union
select 1,'b',1, 1200
union
select 1,'c',1, 1500
union
select 1,'c',1, 15700
union
select 1,'d',2, 1000
union
select 1,'e',2, 1200
union
select 1,'g',3, 1500
我試圖獲得最大的薪水爲每個類別使用row_number
功能的常見方式給出。
;with cte
as
(
select ROW_NUMBER() over(partition by deptid order by salary) as id, * from employee1
)
select * from cte
如果什麼有關係?你想要兩條記錄嗎?在這種情況下,如果1人的薪水最高,2人並列第二名,那麼你想要第三最高薪水(第四人)還是第二人? – Matt
是啊..我會將row_number更改爲dense_rank來解決關係。 – bmsqldev
我更新了答案,你只需要用dense_rank()替換row_number() – Matt