湖人vs掘金视频直播

admin · 2011-01-01

  

  

本文转载自微信群众号「SQL数据库拓荒」,作家丶通俗宇宙。转载本文请相合SQL数据库拓荒群众号。

  明天给大师先容一下SQL Server排名中每每用到的ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()这四个好兄弟。

  咱们先创修一个测试数据外Scores

  

WITHtAS(SELECT1StuID,70ScoreUNIONALLSELECT2,85UNIONALLSELECT3,85UNIONALLSELECT4,80UNIONALLSELECT5,74)SELECT*INTOScoresFROMt;SELECT*FROMScores

 

  了局如下:

  

   1、ROW_NUMBER()

  界说:ROW_NUMBER()函数感化即是将SELECT盘问到的数据停止排序,每一条数据加一个序号,他不行用做于门生功劳的排名,大凡众用于分页盘问,譬喻盘问前10个 盘问10-100个门生。

  1.1 对门生功劳排序

  示例

  

SELECTROW_NUMBER()OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores;

 

  了局如下:

  

  这里RANK即是每一个门生的排名后的规律, 依照Score停止DESC倒序

  1.2 获取第2名的功劳音信

  

SELECT*FROM(SELECTROW_NUMBER()OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores)tWHEREt.RANK=2;

 

  了局:

  

  这里用到的怀念即是 分页盘问的怀念 正在原sql外再套一层SELECT

  WHERE t.RANK>=1 AND t.RANK<=3 是不是即是获取前三王谢生的功劳音信了。

   2、RANK()

  界说:RANK()函数,望文生义排名函数,可能对某一个字段停止排名,这里和ROW_NUMBER()有甚么纷歧律呢?ROW_NUMBER()是排序,当存正在沟通功劳的门生时,ROW_NUMBER()会次第停止排序,他们序号不沟通,而Rank()则纷歧律。倘若浮现沟通的,他们的排名是一律的。上面看例子:

  示例

  

SELECTROW_NUMBER()OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores;SELECTRANK()OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores;

 

  了局:

  

  下面是ROW_NUMBER()函数的了局,上面是RANK()函数的了局。

  当浮现两个门生功劳沟通是内里浮现转变。RANK()是1-1-3-4-5,而ROW_NUMBER()则照样1-2-3-4-5,这即是RANK()和ROW_NUMBER()的差别了

   三、DENSE_RANK()

  界说:DENSE_RANK()函数也是排名函数,和RANK()性能雷同,也是对字段停止排名,那它和RANK()结果有甚么区别那?奇特是看待有功劳沟通的情景,DENSE_RANK()排名是连气儿的,RANK()是腾跃的排名,大凡情景下用的排名函数即是RANK() 咱们看例子:

  示例

  

SELECTRANK()OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores;SELECTDENSE_RANK()OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores;

 

  了局:

  

  下面是RANK()的了局,上面是DENSE_RANK()的了局

   四、NTILE()

  界说:NTILE()函数是将有序分区中的行散发到指定命量的组中,各个组有编号,编号从1开端,就像咱们说的分区一律 ,分为几个区,一个区会有若干个。

  

SELECTNTILE(1)OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores;SELECTNTILE(2)OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores;SELECTNTILE(3)OVER(ORDERBYSCOREDESC)AS[RANK],*FROMScores;

 

  了局:

  

  即是将盘问出来的记载依照NTILE函数里的参数停止等分分区。

  这几兄弟就先容完了,有空再给大师先容分组排名的题目。

文章推荐:

cba大白熊是谁

直播欧冠预选赛赛程

大地欧洲杯直播

cctv怎么看欧洲杯直播表