oracle+sql去重复时间,Oracle SQL:筛选仅相差很小时间的重复行

我有一个带有事件警报的Oracle表,由于奇怪而未知的情况,有时会重复发生警报,​​因此我被要求创建一个服务,该服务将从该Oracle表中删除重复的警报。

重复考虑一个警报(表中的一行)的条件是,存在另一个具有相同的PKN_EVENTNAME和RECEIVEDDATE的警报,它与前一个仅相差很小的时间(例如10秒,例如-

up或下-)。

我首先要做的是创建一个Oracle sql语句,该语句将按PKN_EVENTNAME将所有警报分组,并在每个组中将重复的警报分开(以供以后删除)。

我想我在路上,但是我被卡住了。

驴有任何帮助吗?

到目前为止,我的SQL:

select t1.ID, t1.PKN_EVENTNAME, t1.RECEIVEDDATE

from PARQUIMETERS_ALARMS t1

where

exists

(select 'x'

from PARQUIMETERS_ALARMS t2

where t1.id <> t2.id and -- Not the same row

trunc(t2.RECEIVEDDATE) = trunc(t1.RECEIVEDDATE) -- Same date

and abs(t1.RECEIVEDDATE - t2.RECEIVEDDATE) * 24 * 60 * 60 < 10) -- < 10 sec

tU346.png

编辑1:

通过@Tejash更正,我在Visual Studio Oracle

SQL浏览器中看到了不同的结果,但是我无法理解它们。我不清楚结果是否已经是要删除的记录(重复的警报)还是什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值