使用ORACLE开窗函数over()进行重复数据的删除【自用】

本文详细介绍了开窗函数的概念、使用方法及在删除重复数据过程中的应用,包括如何通过开窗函数实现数据分区和排序,最终筛选出每组中的第一条记录,形成处理后的数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先针对开窗函数做一下简单介绍:

开窗函数          
     Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。

      开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例:

     over(order by f_user_num) 按照f_user_num排序进行累计,order by是个默认的开窗函数
     over(partition by f_user_num)按照f_user_num分区

     over(partition by f_user_num order by f_shop_card )按照f_user_num分区,并以f_shop_card进行排序

删除重复数据的原理:
1、将原始数据拷贝到一个备份表中。
2、使用开窗函数将数据以重复标识字段进行分区,以其他字段进行排序
3、取其中第1条,并将筛选后的数据放入新表中(该表即为处理之后的数据)
示例如下:
insert into t_1249_target_user
select f_stage_num, 
       f_user_num, 
       f_comm_busi, 
       f_4g_busi, 
       f_shop_card from (
select t.*,row_number()over(partition by f_user_num order by f_shop_card desc,f_comm_busi desc) rn from t_1249_target_user_his  t)
where rn=1;
commit;

开窗函数还有很多与其他函数结合使用的方法,有空可以再研究一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值