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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android 参数 attrs.xml,android – 定义自定义attrs

    android 参数 attrs.xml,android – 定义自定义attrs传统的方法充满了样板代码和笨拙的资源处理。这就是我制作Spyglass框架的原因。为了演示它是如何工作的,这里有一个示例,展示如何创建一个显示字符串标题的自定义视图。第1步:创建自定义视图类。publicclassCustomViewextendsFrameLayout{privateTextViewtitleView;publicCustomView(Contextcont…

    2022年8月31日
    2
  • nginx配置ssl证书实现https访问_更换ssl证书

    nginx配置ssl证书实现https访问_更换ssl证书1,登录阿里云,工作台找SSL证书或者安全下找CA证书2,点击创建证书(或购买证书),创建好以后点击证书申请、3,设置配置以及域名信息,仅填写圈住内容,其他默认即可4,随后等待一会,查看状态,是否为 已签发5,为已签发时,点击下载选择下载类型6,下载后解压文件7,上传至服务器,存放位置,先找到nginx所在位置 “/nginx/conf/”找到该位置创建“cert”把刚才解压的两个文件存放至此。8,开始nginx配置内容`server { #SSL 访问端口号为 443 li

    2022年8月19日
    51
  • pycharm 最新激活码(JetBrains全家桶)[通俗易懂]

    (pycharm 最新激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    126
  • mysql查看表的数据结构_mysql查找表结构

    mysql查看表的数据结构_mysql查找表结构MySQL查看表结构mysql查看表结构命令,如下:desc表名;showcolumnsfrom表名;describe表名;showcreatetable表名;useinformation_s…mysql查看表结构命令mysql查看表结构命令mysql查看表结构命令,如下:desc表名;showcolumnsfrom表名;describe表名;sh…

    2025年8月29日
    5
  • 动态代理

    动态代理

    2021年7月20日
    53
  • spring3.2 定时器 SchedulerFactoryBean 注入错误[通俗易懂]

    spring3.2 定时器 SchedulerFactoryBean 注入错误[通俗易懂]异常信息[org.springframework.scheduling.quartz.SchedulerFactoryBean]forproperty’scheduler’;nestedexceptionisjava.lang.IllegalArgumentException:Cannotconvertvalueoftype[org.quartz.impl.Std

    2022年5月10日
    31

发表回复

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

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