91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

sql server排名函數DENSE_RANK的用法是什么

發布時間:2021-11-30 19:46:45 來源:億速云 閱讀:383 作者:柒染 欄目:數據庫

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

一、需求

  之前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的用法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗定市| 长垣县| 霞浦县| 建宁县| 丹阳市| 漳平市| 沁阳市| 三门县| 黄骅市| 安多县| 平阴县| 乌审旗| 黔江区| 溧水县| 陆丰市| 新民市| 北海市| 湘西| 红河县| 鞍山市| 黑水县| 汉沽区| 寿宁县| 蕉岭县| 苍梧县| 青神县| 蓬溪县| 禄丰县| 涟源市| 太康县| 郎溪县| 汾阳市| 台安县| 刚察县| 陆丰市| 蚌埠市| 同心县| 枝江市| 鹤岗市| 庆城县| 闽清县|