您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Oracle SQL:筛选仅相差很小时间的重复行

Oracle SQL:筛选仅相差很小时间的重复行

您可以利用range分析函数的子句:

with dups as (
  select t1.*
       , row_number() over (
           partition by PKN_EVENTNAME, RECEIVEDDATE
           order by id
         ) as dup
  from PARQUIMETERS_ALARMS t1
), nodups as (
  select * from dups where dup = 1
), t as (
  select nodups.ID, nodups.PKN_EVENTNAME, nodups.RECEIVEDDATE
       , count(*) over (
           partition by nodups.PKN_EVENTNAME
           order by nodups.RECEIVEDDATE
           range between interval '10' second preceding and current row
         ) as cnt
  from nodups
)
select * from t where cnt = 1

(已更新:CTE,dups并且nodups在注释中显示的OP之后添加了重复的元组(PKN_EVENTNAME, RECEIVEDDATE)。)

说明:清除通过nodupsCTE传递的数据后,该where条件仅过滤在最近10 s中仅存在单行的行(显然是当前行)。

SQLServer 2022/1/1 18:33:19 有564人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶