首页 > 解决方案 > 计算 48 小时内出现的时间记录数 - SQL

问题描述

我们如何选择在 48 小时内出现多次的记录的计数?

例如

ID DATE 
1  9/24/2018
1  9/23/2018
1  9/20/2018
2  9/20/2018

ID 1 在 48 小时内出现不止一次

请让我知道如何编写一个 sql 查询来执行此操作

标签: sqloracle

解决方案


有很多方法,但我会从使用LAG()和日期比较开始。假设您的 DATE 列是日期数据类型?

WITH
  entity_summary AS
(
  SELECT
    ID,
    CASE
      WHEN LAG("DATE") OVER (PARTITION BY ID ORDER BY "DATE") >= "DATE" - INTERVAL '2' DAY
      THEN 1
      ELSE 0
    END
      AS occurence_within_2_day
  FROM
    Table1
)
SELECT
  ID,
  SUM(occurence_within_2_day)
FROM
  entity_summary
GROUP BY
  ID
HAVING
  SUM(occurence_within_2_day) >= 1

推荐阅读