postgresql:选择一系列带条件的日期,并删除中间日期

rpppsulh  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(110)

我需要得到一系列的数据,这将给予我连续的日期,至少是14天的间隔。
例如:
| 用户识别码|日期|
| - ------|- ------|
| 1个|2022年1月1日|
| 1个|2022年1月5日|
| 1个|二○二二年一月三十一日|
| 1个|二○二二年二月二十二日|
预期输出:
| 用户识别码|日期|
| - ------|- ------|
| 1个|2022年1月1日|
| 1个|二○二二年一月三十一日|
| 1个|二○二二年二月二十二日|
我被困在如何从数据中删除1/5/2022?我甚至不确定我可以尝试在postgresql中使用哪个函数。
短暂性脑缺血发作

hgqdbh6s

hgqdbh6s1#

您可以使用LAG窗口函数来检查连续的日期。之后,您可以检查您的日期是否大于您的前一个日期+14天。

WITH cte AS (
    SELECT *, LAG(date_) OVER(PARTITION BY userid ORDER BY date_) AS prevdate
    FROM tab
)
SELECT userid, date_
FROM cte
WHERE date_ > prevdate + INTERVAL '14 day' OR prevdate IS NULL

检查here演示。

相关问题