分享好友 最新动态首页 最新动态分类 切换频道
ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法,先分组,然后在组内排名,分组计算,主表与附表一对多取唯一等
2024-12-28 04:04

今天在使用多字段去重时,由于某些字段有多种可能性,只需根据部分字段进行去重,在网上看到了rownumber() over(partition by col1 order by col2)去重的方法,很不错,在此记录分享下:
  row_number() OVER ( PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).
  与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码.


row_number()rownum差不多,功能更强一点(可以在各个分组内从1开时排序).
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).
dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的.
lag(arg1,arg2,arg3):
  arg1是从其他行返回的表达式
  arg2是希望检索的当前行分区的偏移量。是一个正的偏移量,是一个往回检索以前的行的数目。
  arg3是在arg2表示的数目超出了分组的范围时返回的值。


函数语法:
OPAP函数语法四部分:
1.function 本身用于对窗口中的数据进行操作;
2.partitioning clause 用于将结果集分区;
3.order by clause 用于对分区中的数据进行排序;
4.windowing clause 用于定义function在其上操作的行的集合,即function所影响的范围;


RANK()
dense_rank()
【语法】RANK ( ) OVER ( [query_partition_clause] order_by_clause )
dense_RANK ( ) OVER ( [query_partition_clause] order_by_clause )

【功能】聚合函数RANK 和 dense_rank 主要的功能是计算一组数值中的排序值。
【参数】dense_rank与rank()用法相当,
【区别】dence_rank在并列关系是,相关等级不会跳过。rank则跳过
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)
dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。
【说明】Oracle分析函数


ROW_NUMBER()
【语法】ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)
【功能】表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的)
row_number() 返回的主要是“行”的信息,并没有排名
【参数】
【说明】Oracle分析函数

主要功能:用于取前几名,或者最后几名等
sum(...) over ...
【功能】连续求和分析函数
【参数】具体参示例
【说明】Oracle分析函数


lag()lead()
【语法】
lag(EXPR,<OFFSET>,<DEFAULT>) OVER ( [query_partition_clause] order_by_clause )
LEAD(EXPR,<OFFSET>,<DEFAULT>) OVER ( [query_partition_clause] order_by_clause )
【功能】表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的)
lead () 下一个值 lag() 上一个值

【参数】
EXPR是从其他行返回的表达式
OFFSET是缺省为1 的正数,表示相对行数。希望检索的当前行分区的偏移量
DEFAULT是在OFFSET表示的数目超出了分组的范围时返回的值。
【说明】Oracle分析函数

 

以上内容摘抄自:http://blog.csdn.net/yinshan33/article/details/18738229

 

 

之前用过row_number(),rank()等排序与over( partition by ... ORDER BY ...),这两个比较好理解: 先分组,然后在组内排名。

今天突然碰到sum(...) over( partition by ... ORDER BY ... ),居然搞不清除怎么执行的,所以查了些资料,做了下实操。

1. 从最简单的开始

  sum(...) over( ),对所有行求和

  sum(...) over( order by ... ),和 = 第一行 到 与当前行同序号行的最后一行的所有值求和,文字不太好理解,请看下图的算法解析。

2. 与 partition by 结合

  sum(...) over( partition by... ),同组内所行求和

  sum(...) over( partition by... order by ... ),同第1点中的排序求和原理,只是范围限制在组内

 

以上内容摘抄自:http://www.cnblogs.com/luhe/p/4155612.html

 

案例:

有圈子表CMSocial,圈子成员表CMSocialMember,圈子审核表CMSocialCheck,其中圈子审核被拒绝的话,修改信息后可以再次提交审核,也就是说圈子可以生成多条圈子审核信息。

如果要查询某用户的全部圈子,同时获取其中每条圈子对应的最近一条审核状态?(假设某用户MemberID=1 )

SQL语句可以这样写:

 

注意:

SELECT ROW_NUMBER() OVER (PARTITION BY CMSocialID ORDER BY CreateTime DESC) AS group_index ,*      
FROM CMSocialCheck WHERE IsDelete<>1
) AS SCsub WHERE SCsub.group_index=1

 

sql根据某一个字段重复只取第一条数据
使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值为1的记录即可。目前主流的数据库都有支持分析函数,很好用。
其中,partition by 是指定按哪些字段进行分组,这些字段值相同的记录将在一起编号;order by则是指定在同一组中进行编号时是按照怎样的顺序。
示例(SQL Server 2005或以上适用):

 

主表1条数据,对应子表,附表多条数据,取唯一:

最新文章
电脑桌面怎么换壁纸
在数字化时代,电脑已经成为我们日常生活和工作中不可或缺的工具。而电脑桌面壁纸作为个性化表达的一部分,更是能够彰显用户的独特品味和心情。那么,如何更换电脑桌面壁纸呢?下面,我们就来详细讲解一下。**一、Windows系统更换壁纸方法*
易旨语餐饮课堂:美团外卖店铺评分评价规则是什么?如何优化?
您好,欢迎来到易旨语餐饮课堂 ,点击右上角“关注”,我们将为您分享更多的外卖运营干货。作者|子语来源|易旨语餐饮课堂店铺评分是影响门店质量的一个重要指标,优化店铺评分不仅可以提升店铺权重,也可以提升店铺的排名和转化。那么,
江西省吉安市委议军会聚力破解国防动员重难点问题——立说立行,压实责任抓落实
转自:中国国防报本报讯 顾波波、特约记者龙礼彬报道:将国防动员能力建设纳入市直机关综合考评;推进市民兵训练基地项目建设,落实事业编管理人员和专职教练员;建立党管武装职责清单,组织各级书记系统学习……近日,江西省吉安市召开市
广电总局出手管理AI魔改视频 规范二次创作边界
广电总局出手管理AI魔改视频近日,广电总局网络视听司发布《管理提示(AI魔改)》,要求各平台整改AI魔改影视剧的短视频内容。这些视频为博取流量,毫无边界地亵渎经典IP,冲击传统文化认知,与原著精神内核相悖,且涉嫌侵权行为。对此,《
韩国男明星人气榜前十五名(韩国男明星人气榜百度2021)
韩国艺人是出了名的能歌善舞,颜艺双全,所以难免会被我国年轻群体所喜爱。今天女粉有福了,小编给大家介绍韩国最受欢迎男明星人气排名前十五,或许其中就出现了你喜欢的爱豆呢?1、宋仲基与宋慧乔出演过电视剧《太阳的后裔》,在出演过很
如何制作自己的网页链接,一步步指南
在这个数字化时代,拥有一个属于自己的网站链接是展示个人品牌、分享信息或开展业务的关键。但是,如果你不是一个专业的程序员,可能会对如何制作网页链接感到困惑。不用担心,本篇指南将引导你通过几个简单的步骤来创建你自己的网页链接。
华为网盘
华为网盘是款非常不错的线上上传软件,你能够轻松很快的上传自己的作品,轻松开启被封,相册智能分析,还能够开启文件分享,再也不需要担心数据丢失,还支持手机端同步,多个客户端上传和打开,还能够批量处理,一键轻松备份,云端共享,还
筑梦青春志在四方 规划启航职引未来
为加强大学生生涯教育和就业指导,增强大学生职业规划意识,指导其及早做好就业准备,促进高校毕业生高质量充分就业。结合学院实际,公共管理学院于2024年12月10日下午在舞钢校区致知楼406教室举办大学生职业规划大赛。学院书记葛长发、副
百度站长资源平台自动批量添加站点域名工具(站长站群工具)
做站群或蜘蛛池都需要将大量域名添加到站长平台,如果采用手动添加就太枯燥了,能用程序解决的就不要靠手了。 所以域名文件格式(域名.txt)如下:每行一个域名必须加协议头1、先用账号登陆百度资源平台http
比漫熊漫画正版免费
比漫熊漫画正版免费是一款专为漫画爱好者打造的移动应用程序。它提供了丰富多样的漫画资源,包括热门的日本漫画、韩国漫画以及国内原创漫画等。用户可以通过该应用随时随地阅读自己喜欢的漫画作品,无论是在公交车上、地铁里还是在家中休闲
相关文章
推荐文章
发表评论
0评