row_number() over(partition by 列名1 order by 列名2 desc)的使用

编程知识 更新时间:2023-04-29 04:23:03
表示根据 列名1 分组,然后在分组内部根据  列名2 排序,而此函数计算的值就表示每组内部排序后的顺序编号,可以用于去重复值

与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码

---查询所有姓名,如果同名,则按年龄降序 SELECT name,age,detail,ROW_NUMBER() OVER(PARTITION BY name ORDER BY age DESC) FROM TEST_Y;
通过上面的语句可知,是按照name字段分组,按age字段排序的。 如果只需查询出不重复的姓名即可,则可使用如下的语句, 由查询结果可知,姓名相同年龄小的数据被过滤掉了; SELECT   *   FROM   ( SELECT   name ,age, detail ,ROW_NUMBER()   OVER (   PARTITION   BY   name  ORDER   BY   age  DESC )RN   FROM   TEST_Y ) WHERE   RN=   1 ;


分页
--先做一个子查询,先按id1进行排序,排序完后,给每条记录进行了编号 --然后再将子查询做为一张表,就可以进行分页了 select *   from (select t.*,row_number() over(order by t.id1 asc) as rn from demo t) d   where d.rn between 1 and 2


更多推荐

row_number() over(partition by 列名1 order by 列名2 desc)的使用

本文发布于:2023-04-21 18:46:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/da67b3b64fa68398d2acf9df13e6fdb0.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:partition   row_number   desc   order

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 93784文章数
  • 23780阅读数
  • 0评论数