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


相关推荐

  • js中的表单序列化不会序列化未选中的单选框

    js中的表单序列化不会序列化未选中的单选框

    2021年5月25日
    110
  • 生活小感慨

    生活琐事开一篇文来记录生活2021/12/9阻挡我使我停滞不前的,是浮躁的心2021/8/16我也并不希望我的生活是一成不变的.2021/8/13挑战软肋2021/8/5感谢每一个编

    2021年12月13日
    40
  • 马蜂窝裁php换java,php又又又凉凉了吗[通俗易懂]

    马蜂窝裁php换java,php又又又凉凉了吗

    2022年2月12日
    42
  • OSTaskCreateExt_getlocaltime函数

    OSTaskCreateExt_getlocaltime函数uC/OS创建任务有几个硬性要求1.任务必须被创建在多任务开始之前或者是运行的任务中。2.任务不能由ISR创建。3.任务必须在死循环中,并且不能有返回。//建立一个新任务  #if OS_TASK_CREATE_EN > 0                //允许生成OSTaskCreate()函数  INT8U  OSTaskCreate

    2025年9月21日
    3
  • 系统可用性几个9

    系统可用性几个9经常看到各种技术文章或者分布式系统介绍说系统的可用性达到了多少个9,那么所谓”几个9“到底是怎么计算的?又意味着什么?我们简单计算分析下看看。所谓”1个9“是指90%,”2个9“是指99%,”3个9“是指99.9%,依次类推。可用性的反面是故障时间,网站或者分布式系统会因为很多原因导致不可用,比如:程序bug;运维更新错误;环境配置升级变化;机器硬件故障;被恶意攻击;网关不小心踢掉了网线/电源插座…

    2022年7月12日
    32
  • VC++界面库[通俗易懂]

    VC++界面库[通俗易懂]好东西,果断收藏  刚开始用C++做界面的时候,根本不知道怎么用简陋的MFC控件做出比较美观的界面,后来就开始逐渐接触到BCG XtremeToolkitProv15.0.1,Skin++,等界面库,以及一些网友自己写的界面库,开始对于C++软件界面美化有了一点点的心得。不敢藏私,希望和一些新手朋友们分享交流。  一. 开源C++界面库

    2022年10月8日
    2

发表回复

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

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