校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 實例講解sql server排名函數DENSE_RANK的用法

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

熱門標簽:地圖標注可以編輯地名嗎 真3地圖標注 樂昌電話機器人 地圖標注跑線下市場 臺灣外呼系統(tǒng)軟件 南京怎么申請400這種電話 濮陽清豐400開頭的電話申請 南通智能外呼系統(tǒng)怎么樣 疫情時期電話機器人

一、需求

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

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

  例如:

  

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

    

  測試數據:  

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

二、自己實現

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

select t1.* from @t t1
join(select distinct top 5 Score from @t order by Score desc) t2
on 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的使用方法,分享了自己的一些想法,希望對大家的學習有所啟發(fā)。

您可能感興趣的文章:
  • SQL2005 四個排名函數(row_number、rank、dense_rank和ntile)的比較
  • SQL查詢排名函數實例
  • SqlServer 2005的排名函數使用小結
  • sql四大排名函數之ROW_NUMBER、RANK、DENSE_RANK、NTILE使用介紹

標簽:南京 河北 廣安 陜西 福建 馬鞍山 通遼 阿里

巨人網絡通訊聲明:本文標題《實例講解sql server排名函數DENSE_RANK的用法》,本文關鍵詞  實例,講解,sql,server,排名,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《實例講解sql server排名函數DENSE_RANK的用法》相關的同類信息!
  • 本頁收集關于實例講解sql server排名函數DENSE_RANK的用法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 苗栗市| 建水县| 偃师市| 务川| 黄梅县| 股票| 德保县| 财经| 朔州市| 北流市| 哈尔滨市| 黄平县| 安龙县| 五大连池市| 山丹县| 莱阳市| 赞皇县| 株洲县| 镇宁| 峡江县| 景东| 巴彦县| 开阳县| 宝清县| 湖南省| 上林县| 湾仔区| 深州市| 临清市| 霍山县| 石狮市| 新竹县| 收藏| 凤庆县| 罗城| 灵璧县| 剑川县| 会泽县| 衡水市| 宜丰县| 高唐县|