我有一个数据集,其中包含:
Table { date itemName }
大部分日期是连续的。日期没有重复项[因为它是主键]。
问题分为多个部分(全部与使用 SQL 相关):
- 是否可以找出表中列出的日期系列中的空白?
例如:缺少日期
1/2/09-1/3/09
- 是否可以找到表格中缺失的日期部分,其范围大于 n(这是一个在运行时确定的数字)?例如:对于
n = 2
日期1/2/09-1/3/09
未返回,但日期5/6/09-6/1/09
是。
最佳答案
如果您可以使用 PostgreSQL 8.4,那么 window functions将帮助:
SELECT *
FROM (SELECT itemName, date, date - lag(date) OVER w AS gap
FROM someTable WINDOW w AS (ORDER BY date)
) AS pairs
WHERE pairs.gap > '1 day'::interval;
关于sql - PostgreSQL 和顺序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1517869/