首页 > 其他 > 详细

row_number() OVER (PARTITION BY COL1 ORDER BY COL2)

时间:2020-07-02 20:06:10      阅读:201      评论:0      收藏:0      [点我收藏+]

一、数据源显示

  SELECT * FROM `partition`; 

技术分享图片

 

注意天明的在表中的默认顺序。

 

 

 

 

 

 

二、函数解释:

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 

先将COL1进行分组,同名则同组,然后按照COL2排序,带出的结果就是COL2排序的顺序。第一名为1,第二名为2,以此类推。可倒序。

row_number() OVER (PARTITION BY COL1 ) 

先将COL1进行分组,同名则同组,然后按照COL1排序,带出的结果就是COL1排序的顺序。第一名为1,第二名为2,以此类推。可倒序。

row_number() OVER ( ORDER BY COL2)  

按照COL2进行排序。

 

 

 

三、结果展示:

3.1 排名只有一个值,不会出现两个同名次。

 注意月儿的年份排名

    SELECT `name`,`year`, row_number() over (partition by `name` order by `year` desc) as 年份排名 FROM `partition`;

技术分享图片

 

 

  

3.2  可以降序。

 

    SELECT `name`,`year`, row_number() over (partition by `name` order by `year` ) as 年份排名 FROM `partition`;

技术分享图片

 

3.3 不要order by

     SELECT `name`,`year`, row_number() over (partition by `name` ) as 年份排名 FROM `partition`;     
     SELECT `name`,`year`, row_number() over (partition by `name` order by `name` ) as 年份排名 FROM `partition`; --与上面结果一致

技术分享图片

 

 

3.4 不要partition by

SELECT `name`,`year`, row_number() over (order by `year` ) as 年份排名 FROM `partition`;     

 

技术分享图片

 

row_number() OVER (PARTITION BY COL1 ORDER BY COL2)

原文:https://www.cnblogs.com/qianslup/p/13226404.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!