Oracle如何用单字段或多字段进行查重
最近在整理数据形成信用报告,发现重复的数据真的多,梳理都好久。我就做个笔记把去掉重复数据的方法整理下来。方便我后期查阅。
我将我目前已知的两种去重方法分为:视图去重和表去重。原理就是有无rowid这个字段。
单字段查重
表A:
| ID | name | uscc | money |
|---|---|---|---|
| 1 | 张飞 | 11111 | 100 |
| 2 | 关羽 | 22222 | 100 |
| 3 | 刘备 | 33333 | 300 |
| 4 | 马超 | 44444 | 400 |
| 5 | 张飞 | 55555 | 100 |
| 6 | 马超 | 44444 | 400 |
这时候,我们来进行去重:如果只根据一个字段来去重的话,根据name字段,我们看下重复的有两条数据为‘张飞’和‘马超’
这个时候我们用最简单的方法rowid。通俗易懂
select * from 表A where rowid in(
select max(rowid) from 表A group by NAME)
order by id;
| id | name | uscc | money |
|---|---|---|---|
| 1 | 张飞 | 11111 | 100 |
| 2 | 关羽 | 22222 | 100 |
| 3 | 刘备 | 33333 | 300 |
| 4 | 马超 | 44444 | 400 |
这个时候,数据就如上图所示。当name字段一样的时候,取rowid最大的保留。
上面那个是去重语句,下面说下查询表中的重复数据有哪些的语句
select * from 表A t,(select NAME from 表A group by NAME having count(1)>1) x
where t.NAME=x.NAME
order by t.id
| id | name | uscc | money |
|---|---|---|---|
| 1 | 张飞 | 11111 | 100 |
| 4 | 马超 | 44444 | 400 |
| 5 | 张飞 | 55555 | 100 |
| 6 | 马超 | 44444 | 400 |
但是呢,有的时候我们使用多张表整合的视图,进行去重,这时候就没有rowid了。我们要怎么去重呢?
select * from (select s.* from
(select t.*,row_number() over (partition by uscc order by uscc) as group_idx
from 表A t ) s
where s.group_idx = 1)
查询结果为:
| id | name | uscc | money |
|---|---|---|---|
| 1 | 张飞 | 11111 | 100 |
| 2 | 关羽 | 22222 | 100 |
| 3 | 刘备 | 33333 | 300 |
| 4 | 马超 | 44444 | 400 |
多字段查重
我们取NAME和USCC两个字段进行查重,因为很多时候,数据判断是否重复并不是一个字段就可以了,而且通过两个,甚至是一整条数据是否完全相同进行查重,这时候我们就用下面这个语句
select * from (select s.* from
(select t.*,row_number() over (partition by name,uscc order by name,uscc) as group_idx
from 表A t ) s
where s.group_idx = 1)
查询结果如下:
| ID | name | uscc | money |
|---|---|---|---|
| 1 | 张飞 | 11111 | 100 |
| 2 | 关羽 | 22222 | 100 |
| 3 | 刘备 | 33333 | 300 |
| 4 | 马超 | 44444 | 400 |
| 5 | 张飞 | 55555 | 100 |
ID=6的‘马超’这条数据进行了去重,因为这个条数据NAME和USCC都重复了,所以只取一条。
好记性不如烂笔头,虽然当时还记得怎么写,但是时间一长,就会忘记,如果没有良好的记录的习惯,下次还会百度找资料,很耽误时间。
Oracle如何用单字段或多字段进行查重的更多相关文章
- 用jquery在必填表单字段前加红星总结
一.总结: 今天公司项目中要求给表单中的必填字段添加标记,因为表单字段比较多,后期又有可能某些字段会有变化,所以写了一段js代码来给表单添加标记. html代码: js代码: 关键步骤: 1.红星的设 ...
- 如何设置织梦cms自定义表单字段为必填项
1.编辑器打开\plus\diy.php2.在40行左右找到此行代码:$dede_fields = empty($dede_fields) ? '' : trim($dede_fields);3.在这 ...
- 【小工具】根据定义的白名单字段进行Bean的拷贝
背景 Bean的拷贝一直有一些类可以使用,比如Apache的org.apache.commons.beanutils.BeanUtils或者Spring的org.springframework.bea ...
- oracle数据库根据不同条件给同一字段修改相应的值:
oracle数据库根据不同条件给同一字段修改相应的值: 例如:根据职务调整雇员的工资,如果职务为“SALESMAN”或者“ANALYST”工资上调100元,如果职务为“MANAGER”工资上调200元 ...
- 在Oracle 11g中用看Oracle的共享内存段---------IPCS
很早之前,在一次讲课了,用了命令ipcs,发现oracle的共享内段好小,如下: oracle@mydb ~]$ ipcs -a ------ Shared Memory Segments ----- ...
- Oracle学习笔记:wm_concat函数合并字段
在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...
- oracle 将当前系统时间戳插入timestamp字段
oracle 将当前系统时间戳插入timestamp字段 --insert records 精确到秒:insert into userlogin_his(usrname,logintime) valu ...
- oracle 12c 新特性之不可见字段
在Oracle 11g R1中,Oracle以不可见索引和虚拟字段的形式引入了一些不错的增强特性.继承前者并发扬光大,Oracle 12c 中引入了不可见字段思想.在之前的版本中,为了隐藏重要的数据字 ...
- 如何用SQL语句在指定字段前面插入新的字段?
如何用SQL语句在指定字段前面插入新的字段? 2007-10-17 09:28:00| 分类: 笔记|举报|字号 订阅 create proc addcolumn @tablename va ...
随机推荐
- delphi根据不同图片生成不规则窗口的实现(仅限于BMP格式)
unit CreateImageForm; interface uses Windows, SysUtils, Variants, Classes, Graphics; procedure Creat ...
- 10、 导出python脚本进行数据驱动的接口测试
postman自带脚本导出功能,对于代码小白来说,可以不错的学习代码级接口测试 第一步:输入接口地址,点击send 第二步:点击code,导出脚本文件,为python脚本 第三步:安装python3以 ...
- HDU1556-Color the ball-前缀和/线段树/树状数组
N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色.但 ...
- Spark 调优之数据倾斜
什么是数据倾斜? Spark 的计算抽象如下 数据倾斜指的是:并行处理的数据集中,某一部分(如 Spark 或 Kafka 的一个 Partition)的数据显著多于其它部分,从而使得该部分的处理速度 ...
- js对象属性值初始化封装函数
在平常做项目的过程中,总是会遇到需要对一个已经定义过的对象的属性值进行初始化,且对象的属性值的类型有多种(string.number.array.object.boolean),为了方便自己就简单封装 ...
- IntelliJ IDEA(的springboot项目)环境准备(配置maven和jdk)
1.配置maven .使用自己电脑上装的maven版本,而非默认的.(方法一) (1)选择configure--Settings (2)搜索maven,配置3.6.2版本的maven.注意:将mave ...
- docker 挂载文件出错
docker不能挂载文件,只能挂载文件夹,所以先从一个容器中复制一份配置文件. docker run --name test -d idp docker cp test:/app/appsetting ...
- .net中的泛型全面解析
从2.0起我们一直就在谈论泛型,那么什么是泛型,泛型有什么好处,与泛型相关的概念又该怎么使用,比如泛型方法,泛型委托.这一篇我会全面的介绍泛型. 那么首先我们必须搞清楚什么是泛型,泛型其实也是一种类型 ...
- 关于jquery的一些插件
1.fullPage.js插件 fullPage.js 是一个基于 jQuery 的插件,它能够很方便.很轻松的制作出全屏网站.如今我们经常能见到全屏网站,在手机上也经常能看到一些活动页面.这些网站用 ...
- Ubuntu 最简单的方式安装chrome
1.指定安装目录如下: cd opt/ 2.下载包: sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current ...