Oracle去重查询实例

Oracle去重查询实例Oracle去重查询实例今天工作中遇到了一个关于去重的查询,琢磨了半天,终于想明白了,这里简单记录一下。distinct函数说到去重,可能第一反应就是distinct函数,但其实distinct只是针对单一字段的去重有效。例如我想查库中所有的不重复的空号手机数量,如下即可selectcount(distinctn.phonenumber)fromIVR_NO_EXISTn这样查出来一共有295136个空号之后我想查出每天识别出的不重复的空号有多少,开始没想太多,直接写了sel

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Oracle去重查询实例

今天工作中遇到了一个关于去重的查询,琢磨了半天,终于想明白了,这里简单记录一下。

  1. distinct函数
    说到去重,可能第一反应就是distinct函数,但其实distinct只是针对单一字段的去重有效。
    例如我想查库中所有的不重复的空号手机数量,如下即可
select count(distinct n.phonenumber)
from IVR_NO_EXIST n

Jetbrains全家桶1年46,售后保障稳定

这样查出来一共有295136个空号

之后我想查出每天识别出的不重复的空号有多少,开始没想太多,直接写了

select 
n.dial_date,
count(distinct n.phonenumber) as CNT_Invalid
from IVR_NO_EXIST n
group by n.dial_date
order by n.dial_date

结果还是可以正常显示的,但是每一天的空号数量之和要大于总的非重复空号数,我开始怀疑哪里出错了。

  1. 多个条件时的去重
    其实这里出现问题的不在于同一天里有重复的空号,每一天的空号其实还是unique的,只是可能后面出现的空号是前些天已经识别出来的,这部分其实不应该被计入到非重复的空号中,因为前面已经记过一次了
dial_date phone_number
20200731 12345678910
20200806 12345678910

可以看出其实同一个号码在不同天的记录都被计入了,这是不行的,我们必须要对这部分进行去重。

  1. Solution:
    可以考虑用max(rowid)来保留重复的其中一项,代码如下:
select 
n.dial_date,
count(distinct n.phonenumber) as CNT_Invalid
from IVR_NO_EXIST n
where
n.rowid=(select max(e.rowid) 
from IVR_NO_EXIST e 
where e.phonenumber=n.phonenumber)
group by n.dial_date
order by n.dial_date

结果:
按照这段代码运行后每天的空号数量之和就与直接用count(distinct phonenumber)查出来的一样了。

凡事多思考,勤动手,there must be a way out!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234153.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mysql函数FIND_IN_SET()的使用方法

    Mysql函数FIND_IN_SET()的使用方法

    2021年10月24日
    62
  • 全排列 leetcode_8的全排列

    全排列 leetcode_8的全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入:[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]classSolution:defpermute(self,nums):res=[]defbackt…

    2022年9月20日
    0
  • 运维架构简单剖析讲解

    运维架构简单剖析讲解运维架构简单剖析讲解随着IT运维的不断发展,尤其的Linux的飞速发展,越来越多的企业开始使用Linux操作系统平台,例如CentOS、RedHat、Ubuntu、Fedora等等,成千上亿个网站涌现在当今互联网,互联网已经成为必不可少的工具,那今天我们跟大家一起来分享讨论目前用的最多的Linux下主流网站架构:LVS+KEEPALIVED(heartbeat)+Squid+Nginx/Apache+JAVA/PHP+MySQL/MariaDB等,分享一个简单的拓扑图,供各位同学实验参考一般网站总体

    2022年7月17日
    15
  • CentOS7 安装 kafka「建议收藏」

    CentOS7 安装 kafka「建议收藏」文章目录一、安装JDK二、安装zookeeper三、安装kafka一、安装JDKrpm-qa|grepjavarpm-qa|grepjdkrpm-qa|grepgcjrpm-qa|grepjava|xargsrpm-e–nodeps #卸载老版本yumlistjava-1.8*yuminstalljava-1.8.0-openjdk*-yjava-version二、安装zookeeper官方地址:https://ar

    2022年6月6日
    26
  • 如何下载离线地图数据(支持谷歌、百度、高德等所有地图源)

    下载离线地图数据(支持谷歌、百度、高德等所有地图源)发布时间:2019-03-12版权:离线地图分为两种:一种叫“金字塔瓦片”数据,一种叫“矢量地图数据”。我们看的在线地图比如,百度,谷歌,高德等等网页上的地图,都是金字塔瓦片;另外一种是手机上用来导航的,比如高德地图APP,也可以下载离线地图数据,这个就是矢量的。卫星影像地图都是金字塔瓦片,无矢量数据。…

    2022年4月5日
    455
  • matlab如何做向量内积,matlab2010a的bug:* 向量内积的错误解决方案「建议收藏」

    matlab如何做向量内积,matlab2010a的bug:* 向量内积的错误解决方案「建议收藏」很偶然地发现了一个matlab2010a的一个bug:在某种非常特殊的情况下,matlab2010a的向量内积,即*指令会产生错误的结果。下面陈述具体现象:1.程序源代码(注:运行该程序时需要把den1.mat和kern1.mat这两个matlab数据文件与程序放在同一个文件夹中)clc;clear;load(‘den1.mat’);load(‘kern1.mat’);x=kern;y=d…

    2022年9月24日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号