麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

實例講解sql server排名函數DENSE_RANK的用法

2024-08-31 01:03:45
字體:
來源:轉載
供稿:網友
這篇文章主要以一個實例講解了sql server排名函數DENSE_RANK的用法,感興趣的小伙伴們可以參考一下
 

一、需求

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

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

  例如:

  sql server,排名函數,DENSE_RANK

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

    sql server,排名函數,DENSE_RANK

  測試數據:  

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

以上就是sql server排名函數DENSE_RANK的使用方法,分享了自己的一些想法,希望對大家的學習有所啟發。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91精品国产91久久久久久不卞 | 黄色作爱视频 | 国产免费永久在线观看 | 国产毛毛片一区二区三区四区 | 久久精品久久久久 | 成年毛片 | 久久不射电影 | 欧美 日韩 三区 | 久久色在线 | 国产成人视屏 | 国产午夜精品理论片a级探花 | 黄色日韩网站 | 精品国产一区二区三区四 | 国产精品视频六区 | 久久激情国产 | 欧美性激情视频 | 最新av免费网址 | 久久69精品久久久久久国产越南 | 青青国产在线视频 | 鲁丝一区二区二区四区 | 9191色| 日本s级毛片免费观看 | 国产精品久久久久久久久久久久久久久久 | 91av在线影院 | 欧美一级做性受免费大片免费 | 久综合色 | 亚洲第一成网站 | 欧美日本一区二区 | 亚洲欧美在线看 | 一本色道久久99精品综合蜜臀 | 国产精品成人av片免费看最爱 | 中文字幕在线观看免费视频 | 国产88久久久国产精品免费二区 | 87成人免费看片 | 中文字幕亚洲欧美 | 欧美激情精品久久久久久久久久 | av电影直播 | 操操操日日日干干干 | 人人做人人看 | 免费一级高清毛片 | 热99在线视频 |