SQL SERVER 讀取次大值或次小值
阿新 • • 發佈:2018-12-16
很多時候我們查詢資料都是查詢最大值或者最小值,一般都是利用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
結果: