久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

sql server排名函數DENSE

144次閱讀
沒有評論

共計 1110 個字符,預計需要花費 3 分鐘才能閱讀完成。

這篇文章將為大家詳細講解有關 sql server 排名函數 DENSE_RANK 的用法是什么,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

一、需求

之前 sql server 的排名函數用得最多的應該是 RoW_NUMBER() 了,我通常用 ROW_NUMBER() + CTE 來實現分頁;今天逛園,看到另一個內置排名函數還不錯,自己順便想了一個需求,大家可以花 1 分鐘先想想要怎么實現。

需求很簡單:求成績排名前五的學生信息。

例如:

由于成績可以并列,所以前五名可能有多個。例如:

測試數據:

declare @t table(ID int, StudentName nvarchar(15), Score int) insert into @tselect 1, 黃一 ,99 union allselect 2, 吳二 ,99 union allselect 3, 張三 ,99 union allselect 4, 李四 ,98 union allselect 5, 王五 ,97 union allselect 6, 趙六 ,96 union allselect 7, 田七 ,95 union allselect 8, 紀八 ,94 union allselect 9, 邱九 ,93 union allselect 10, 林十 ,92

二、自己實現

我的想法:既然可能出現并列,那么就用 DISTINCT 找到前五的成績。ok, 代碼如下:

select t1.* from @t t1join(select distinct top 5 Score from @t order by Score desc) t2on t1.Score = t2.Score

看起來和上面的要求的結果還是不太一樣,少了排序,當然我們可以在程序處理,這不是問題。

三、使用內置排名函數 DENSE_RANK

其實 sql server 已經內置了這樣的函數可以幫助我們輕松實現,ok, 直接上代碼:

;with cte as( select dense_rank() over(order by Score desc) rank,* from @t)select * from cte where rank   6 

四、擴展,內置排名函數 RANK

與 DENSE_RANK 類似還有一個 RANK 函數,不過 RANK 函數不會順序排名,而是根據序號排。有點繞,把上面的函數改為 RANK() 就知道了。

關于 sql server 排名函數 DENSE_RANK 的用法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-17發表,共計1110字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 丰都县| 清涧县| 庐江县| 时尚| 嘉祥县| 垫江县| 大同市| 临安市| 天气| 涿州市| 澳门| 边坝县| 元谋县| 辰溪县| 瑞丽市| 通州市| 泾阳县| 邳州市| 台湾省| 阿合奇县| 泽州县| 桂林市| 霸州市| 平舆县| 思南县| 孟村| 航空| 卢龙县| 四子王旗| 柘城县| 平度市| 通城县| 高淳县| 镇沅| 马龙县| 大冶市| 集贤县| 疏附县| 长沙县| 孝义市| 登封市|