IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ORACLE 处理重复数据 -> 正文阅读

[大数据]ORACLE 处理重复数据

【背景】 项目中的数据表出现了重复的记录,需要处理,考虑时间问题,决定先把重复数据提取出来,在数据表中删除所有重复数据,后面处理了重复数据再重新入库

【删除重复记录】

这里算是新学习的一个东西,一直以为delete from 没办法 删除与其他表做匹配的数据,原来通过in 可以进行多字段匹配 ,然后执行删除操作

--创建重复记录表1 (用作删除原表数据使用)
create table cf_order_1 as
select  to_char(t.log_time,'yyyy/mm') ctime,t.user_id,t.product_name,count(*) pv  from test_order_info_20220510 t
where
t.log_time >= to_date('2019/01/01 00:00:00','yyyy/mm/dd hh24:mi:ss')
and
t.log_time <= to_date('2023/01/01 00:00:00','yyyy/mm/dd hh24:mi:ss')
group by to_char(t.log_time,'yyyy/mm'),t.user_id,t.product_name
having count(*) > 1
order by count(*) desc


--创建重复记录详细表2 (用作去重数据使用)
create table cf_order_2 as
select t.*  from tbl_order t,cf_order_1 a
where
t.user_id = a.user_id 
and
t.product_name = a.product_name
and
to_char(t.log_time,'yyyy/mm') = a.ctime


--通过相关字段删除 原表中的所有重复记录

delete from tbl_orderxxx t where  
(t.user_id,t.product_name,to_char(t.log_time,'yyyy/mm')) in(select  a.user_id,a.product_name, a.ctime from  cf_order_1 a)
 
--由于处理重复数据需要用到rownum  所有这里在表2的基础上  创建表3 

create table  cf_order_3 as
select rownum rn,t.* from  cf_order_2 t


--重复表去重处理()
select * from cf_order_3 t where t.rn in 
(select t.rown from 
(select  t.user_id,t.product_name,to_char(t.valid_time,'yyyy/mm'),max(t.rn) rown from cf_order_3 t
group by t.user_id,t.product_name,to_char(t.valid_time,'yyyy/mm')
order by t.user_id) t

-- 获取表所有字段
 select column_name
from user_tab_cols
where table_name = upper('cf_order_3')
and column_name not in ('RN');

--将去重后的数据 去掉rownum插入到原始表即可

insert into tbl_orderxxx 
select ACTION_TYPE,USER_ID,LOG_TIME,MEDIACODE,PRODUCT_PRICE,PRODUCT_CODE,PRODUCT_TYPE,PRODUCT_NAME,PAY_TYPE,VALID_TIME,EXPIRED_TIME,PURCHASE_TIME,SERVICE,SYS_ID,PROVIDER_ID,SHARE_CP_ID,SHARE_CP_PRICE,CP_ID,REFERURL,SYS_LOG_TIME
 from cf_order_3 t where t.rn in 
(select t.rown from 
(select  t.user_id,t.product_name,to_char(t.valid_time,'yyyy/mm'),max(t.rn) rown from cf_order_3 t
group by t.user_id,t.product_name,to_char(t.valid_time,'yyyy/mm')
order by t.user_id) t
)  

--回收站清理
select * from user_recyclebin;
purge recyclebin;











  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:48:46  更:2022-05-13 11:51:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/25 17:26:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码