大家好,又见面了,我是你们的朋友全栈君。
今天工作中遇到了一个关于去重的查询,琢磨了半天,终于想明白了,这里简单记录一下。
select count(distinct n.phonenumber)
from IVR_NO_EXIST n这样查出来一共有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结果还是可以正常显示的,但是每一天的空号数量之和要大于总的非重复空号数,我开始怀疑哪里出错了。
dial_date | phone_number |
|---|---|
20200731 | 12345678910 |
20200806 | 12345678910 |
可以看出其实同一个号码在不同天的记录都被计入了,这是不行的,我们必须要对这部分进行去重。
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.cn/234153.html原文链接:https://javaforall.cn