【问题标题】:ORACLE SQL Query records where timeinterval with previous record is less then eg 1 minuteORACLE SQL 查询与前一条记录的时间间隔小于例如 1 分钟的记录
【发布时间】:2014-07-11 14:53:29
【问题描述】:

输入表查询时差小于或等于1分钟的所有记录。

所需输出

>>>>>sqlfiddle <<<<<

【问题讨论】:

    标签: sql oracle datetime lag lead


    【解决方案1】:

    这是你想要的吗?

    select *
    from (select a.*,
                 lag(sdt) over (partition by id order by sdt) as prevsdt,
                 lead(sdt) over (partition by id order by sdt) as nextsdt
          from table_a a
         ) a
    where sdt - prevsdt <= 1/(24*60) or
          nextsdt - sdt <= 1/(24*60);
    

    它在SQL Fiddle 上产生所需的输出。

    【讨论】:

    • +1 打败我。使用LAGLEAD 似乎是这里的方法。
    • 吹毛求疵:我猜你真的不需要内部查询,你可以直接在第一个 SELECT 上使用解析函数。
    • @rsenna 你不能在 WHERE 中使用解析函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2022-12-05
    相关资源
    最近更新 更多