sql - 计算 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 查询来执行此操作
解决方案
有很多方法,但我会从使用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
推荐阅读
- f# - F# 中的部分匿名记录
- c++ - 抑制 eh_frame 段
- google-api - Google OAuth 同意屏幕显示问题
- c - 使用结构的函数的分段错误
- javascript - React Native 如何为平面列表制作搜索栏?
- javascript - 如果配置文件 ID 不存在,如何重定向到 NotFound 页面?
- google-chrome - 通过指定其 SameSite 属性指示是否在跨站点请求中发送 cookie
- angular - 表单名称无法在 ngb 模态角度组件内访问
- flutter - 如何为 listview.length = 1 禁用 ondismissed
- html - 较大视口处的水平滚动条