分享好友 最新动态首页 最新动态分类 切换频道
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条数据,对应子表,附表多条数据,取唯一:

最新文章
汇文往事(7) ——昌黎汇文中学回忆录
p class=ql-block ql-indent-11976年10月6日,是一个国民难以忘怀的日子。正是这一天华主席为首的党中央政治局一举粉碎了四人帮。随后邓小平重新复出就是主抓科学教育,我听过党内传达了邓的讲话。他提出要重视科学技术,重视人才,在
说唱解说视频掘金项目,小白也能操作,号称日赚600+
一、课程大纲:在信息爆炸的时代,电影解说视频已经成为网络上一道亮丽的风景线。而其中,有一个名为“小帅”的创作者,他的电影解说视频以独特的风格脱颖而出。面对激烈的竞争,现在他更是将电影解说与rap结合,开创了电影解说的新高度。
开源架构与云计算的传奇融合
本文深入探讨开源架构与云计算的结合,阐述其成本效益、灵活性、社区支持等优势,通过容器化部署、大数据处理等案例展示实际应用,剖析挑战并提供精准解决方案,具有极高的参考价值和技术细节。 本文深入剖析开源
五大搭建神器助你轻松打造个性化
快速搭建五大神器,轻松实现个性化建设。包括拖拽式网页编辑器、模板库、自定义模块、可视化布局和智能SEO优化,助力您轻松打造专业,节省时间和成本。WixWordPressSquarespaceWeeblyZyro随着互联网的迅猛发展,建立个人的需求日益增长,传
淘宝店铺关键词内部获取
本博客的内容都是以自己的经历为过程,文章都是自己原创,有时候更新的慢,希望大家能够见谅!在淘宝开店的我们都知道关键词的重要,那我们如何获得有参考意义的关键词呢?今天就和大家分享下我的小经验,教你如何从淘宝内部获得关键词! 淘宝的搜
成品网站1688入门:1. 如何在1688网站上成功找到优质供应商
1688是一个专注于批发和采购的大型电商平台,提供各类商品的交易服务。对于初次接触这一平台的新用户而言,了解如何在1688上找到合适的产品及供应商至关重要。这篇文章将为你介绍一些基本操作技巧,以帮助你顺利开启自己的网购之旅。每个卖
安卓手机内存如何清理 安卓手机内存清理方法【介绍】
  安卓手机用户是否遇到过在安装应用的时候,提示:没有存储空间、手机内存不足等情况,接着安卓手机运行的越来越慢,这真是一件让人无法忍受的事情,这就需要大家掌握日常如何对手机内存清理的方法。下面小编就给大家奉上手机内存清理的
必看教程“手机跑得快透视万能挂”(确实是有挂)-知乎优质
您好:手机跑得快透视万能挂这款游戏是可以开挂的,软件加微信【添加图中微信】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实
什么样的普洱茶减肥效果好:挑选减肥普洱茶指南
在快节奏的生活形式中人们越来越重视健康和身体管理。普洱茶作为中国传统茶叶的一种以其特别的发酵工艺和丰富的健康功效在现代生活中备受青睐。尤其是对那些期望在享受美味的同时达到健康减重目的的人而言普洱茶更是一种理想的选择。市面上
正在报名!2025西交大少年班初试全国模考12月14日开考!
广东考帮按:据悉2025年西交大少年班招生简章将在近期发布,元旦进行测试。为帮助广大梦想考入西交少年班的考生增强对笔试难度和自身水平的清晰认知。我们提前组织“西交大少年班模考活动”,2025年西少模考试卷以西少初试近10年真题为蓝本
相关文章
推荐文章
发表评论
0评