分组排序SQL语句——row_number() over (partition by 分组 order by 排序)

‌  row_number() over (partition by order by) 是SQL协议中的一种窗口函数,用于在每个分区内对每一行进行排序并编号,从1开始编号,赋予其连续的编号。

  row_number() 函数搭配partition by与order by函数可以完成以下功能。

  1. 对查询结果集中的每一行分配一个唯一的数字,从1开始编号。
  2. 结合partition by可以先对结果进行分组,然后组内每条数据再从1开始编号。

示例语句:

SELECT *,ROW_NUMBER() OVER (PARTITION BY code, name ORDER BY id  )
AS rn FROM table_name;

  上面语句以表 table_name 中的code、name分组,相同的code和name进行排序,每组的顺序从1开始排列。

  如果我们要删除重复的数据,那么可以这样:

WITH ranked_rows AS (SELECT *,ROW_NUMBER() OVER (PARTITION BY code, name ORDER BY id) AS rn FROM table_name)
DELETE FROM table_name WHERE id IN (SELECT id FROM ranked_rows WHERE rn > 1);

 

posted @   胜金  阅读(335)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示