1. 程式人生 > >SQL SERVER 讀取次大值或次小值

SQL SERVER 讀取次大值或次小值

       很多時候我們查詢資料都是查詢最大值或者最小值,一般都是利用Max或者Min函式來實現,一般很少求次大值的,其實實現也很簡單,記錄一下為大家提供一下思路,這篇部落格介紹一下利用ROW_NUMBER  PARTITION BY怎麼求次大值(次小值)。

       測試資料:

--測試資料
if not object_id(N'Tempdb..#T') is null
	drop table #T
Go
Create table #T([Name] nvarchar(22),[Score] int)
Insert #T
select N'張三',80 union all
select N'張三',90 union all
select N'張三',100 union all
select N'李四',60 union all
select N'李四',65 union all
select N'李四',70 union all
select N'李四',75
Go
--測試資料結束

        實現方式:

;WITH cte AS (
Select *,ROW_NUMBER()OVER(PARTITION BY Name ORDER BY Score DESC) rn from #T
)
SELECT * FROM cte WHERE cte.rn=2

       結果: