Oracle 查询结果去重保留一项
首先因为需要查询很多字段,也就排除了使用distinct的可能性。
1.1 原始sql
select finalSql.*
from (select '' SMS_CONTENT,
'' as 短信发出类型_批量发出,
yqdz.yqdz_hz_mc 短信接收方姓名,
case
when wc.JTDH is not null then
wc.JTDH
when wc.XIAOLINGTONG is not null then
wc.XIAOLINGTONG
when wc.SJ is not null then
wc.SJ
end 短信接受方手机号,
'' 业务对象ID,
yqdz.org_id 区分码
from yongqidizhi yqdz
left join kehuview wc
on wc.Y_ID = yqdz.yqdz_kh_id
left join ranqibiao rqb
on rqb.RQB_YQDZ_ID = yqdz.yqdz_id
where (wc.JTDH is not null or wc.XIAOLINGTONG is not null or
wc.SJ is not null)
and yqdz.yqdz_kh_lx = '') finalSql
where length(trim(finalSql.短信接受方手机号)) = 11
1.2 查询结果
很显然存在重复项
1.3 查询总数
2.1 修改sql
select finalSql.SMS_CONTENT,
finalSql.短信发出类型_批量发出,
finalSql.短信接收方姓名,
finalSql.短信接受方手机号,
finalSql.业务对象ID,
finalSql.区分码,
count(*) as 次数
from (select '' SMS_CONTENT,
'' as 短信发出类型_批量发出,
yqdz.yqdz_hz_mc 短信接收方姓名,
case
when wc.JTDH is not null then
wc.JTDH
when wc.XIAOLINGTONG is not null then
wc.XIAOLINGTONG
when wc.SJ is not null then
wc.SJ
end 短信接受方手机号,
'' 业务对象ID,
yqdz.org_id 区分码
from yongqidizhi yqdz
left join kehuview wc
on wc.Y_ID = yqdz.yqdz_kh_id
left join ranqibiao rqb
on rqb.RQB_YQDZ_ID = yqdz.yqdz_id
where (wc.JTDH is not null or wc.XIAOLINGTONG is not null or
wc.SJ is not null)
and yqdz.yqdz_kh_lx = '') finalSql
where length(trim(finalSql.短信接受方手机号)) = 11
group by finalSql.SMS_CONTENT,
finalSql.短信发出类型_批量发出,
finalSql.短信接收方姓名,
finalSql.短信接受方手机号,
finalSql.业务对象ID,
finalSql.区分码
order by 次数 desc
2.2 查询结果:
我是根据手机号进行分组的,很显然,这里存在很多的垃圾数据,我们需要将这些相同的数据只保留一条
2.3 查询总的记录数
3.1 因为返回结果并不需要“count(*)” 这个字段,因此在最外层再加一层查询,改进sql如下
select finalSql2.SMS_CONTENT,
finalSql2.短信发出类型_批量发出,
finalSql2.短信接收方姓名,
finalSql2.短信接受方手机号,
finalSql2.业务对象ID,
finalSql2.区分码
from (select finalSql.SMS_CONTENT,
finalSql.短信发出类型_批量发出,
finalSql.短信接收方姓名,
finalSql.短信接受方手机号,
finalSql.业务对象ID,
finalSql.区分码,
count(*) as 次数
from (select '' SMS_CONTENT,
'' as 短信发出类型_批量发出,
yqdz.yqdz_hz_mc 短信接收方姓名,
case
when wc.JTDH is not null then
wc.JTDH
when wc.XIAOLINGTONG is not null then
wc.XIAOLINGTONG
when wc.SJ is not null then
wc.SJ
end 短信接受方手机号,
'' 业务对象ID,
yqdz.org_id 区分码
from yongqidizhi yqdz
left join kehuview wc
on wc.Y_ID = yqdz.yqdz_kh_id
left join ranqibiao rqb
on rqb.RQB_YQDZ_ID = yqdz.yqdz_id
where (wc.JTDH is not null or wc.XIAOLINGTONG is not null or
wc.SJ is not null)
and yqdz.yqdz_kh_lx = '') finalSql
where length(trim(finalSql.短信接受方手机号)) = 11
group by finalSql.SMS_CONTENT,
finalSql.短信发出类型_批量发出,
finalSql.短信接收方姓名,
finalSql.短信接受方手机号,
finalSql.业务对象ID,
finalSql.区分码
order by 次数 desc) finalsql2
3.2 查询结果
3.3 查询总数
可见总数与第二步一致,并未缺少数据。
总结,因水平问题,在此只考虑最终查询结果符合要求,并未考虑性能、耗时等其他因素,如有需要,后期再做打算。
如有问题,欢迎大家斧正。
Oracle 查询结果去重保留一项的更多相关文章
- oracle 多字段去重查询
oracle 多字段去重查询 CreationTime--2018年6月29日15点11分 Author:Marydon 1.情景展示 需要对表BASE_MRI_DEVICE的COMPNAME.F ...
- Oracle查询和问题简记
现在做两个版本的系统,一个用的数据库是Access,另一个就是Oracle了.每个数据库支持的的查询SQL语句都有所区别,这里主要针对Access和Oracle做 记录. 首先贴出遇到问题最多的一条语 ...
- Oracle查询表里的重复数据方法:
一.背景 一张person表,有id和name的两个字段,id是唯一的不允许重复,id相同则认为是重复的记录. 二.解决 select id from group by id having count ...
- Oracle 查询(SELECT)语句(一)
Ø 简介 本文介绍 Oracle 中查询(SELECT)语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习. 首先,我们先来理一下思路,我 ...
- Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数 关于处理小数点位数的几个oracle函数()1. 取四舍五入的几位小数select round(1.2345, 3) fr ...
- Oracle查询速度慢的原因总结
Oracle查询速度慢的原因总结 查询速度慢的原因很多,常见如下几种:1,没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2,I/O吞吐量小,形成了瓶颈效应.3,没有创建计算列导致 ...
- [转帖]Oracle 查询各表空间使用情况--完善篇
Oracle 查询各表空间使用情况--完善篇 链接:http://blog.itpub.net/28602568/viewspace-1770577/ 标题: Oracle 查询各表空间使用情况--完 ...
- 保留重复项(Power Query 之 M 语言)
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...
- Oracle打怪升级之路一【Oracle基础、Oracle查询】
前言 背景:2021年马上结束了,在年尾由于工作原因接触到一个政府单位比较传统型的项目,数据库用的是Oracle.需要做的事情其实很简单,首先从大约2000多张表中将表结构及数据导入一个共享库中,其次 ...
随机推荐
- VueJS中学习使用Vuex详解
转载自:https://segmentfault.com/a/1190000015782272,做了部分修改(这里建议不要用所谓的getters,一来多次一举,二来模块化时会产生很不协调的用法) 在S ...
- git stash详解
应用场景: 1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然 ...
- Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)
一.url控制 基本路由写法:最常用 from django.conf.urls import url from django.contrib import admin from app01 impo ...
- Python-09-文件处理
一.文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 #1. 打开文件,得到文件句柄并赋值给一个变量 f=open('a.txt','r',encoding='u ...
- PAT(B) 1050 螺旋矩阵(Java:24分)
题目链接:1050 螺旋矩阵 (25 point(s)) 题目描述 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上 ...
- PAT(B) 1045 快速排序(C)
题目链接:1045 快速排序 (25 point(s)) 参考博客:1045 快速排序 (25 point(s))繁星蓝雨 题目描述 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一 ...
- 树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning
树卷积神经网络Tree-CNN: A Deep Convolutional Neural Network for Lifelong Learning 2018-04-17 08:32:39 看_这是一 ...
- mac 上使用 idea 上传项目代码到阿里云git上
1.Idea 打开需要上传的项目 2.先在本地创建一个git仓库 VCS --> Import into Version Control --> Create Git reposito ...
- 多个echarts图自适应屏幕大小
当一个echarts图时,可以这样做 //下面my_charts是html中echarts的ID var myChart= echarts.init(document.getElementById(& ...
- Java 之 函数式编程
一.Lambda 的延迟执行 有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费.而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能 . 性能浪费的日志案例 注意:日志可以帮助 ...