【发布时间】:2012-01-12 14:30:01
【问题描述】:
我想在给定日期范围内为每个用户插入到我的表中的连续日期流中每隔 4 天查找/标记一次
CREATE TABLE mytable (
id INTEGER,
myuser INTEGER,
day DATE NOT NULL,
PRIMARY KEY (id)
);
问题是,每个用户只有连续 3 天有效,之后,必须有一天的“休息”
id | myuser | day |
-----+--------+------------+
0 | 200 | 2012-01-12 | }
1 | 200 | 2012-01-13 | }--> 3 continuous days
2 | 200 | 2012-01-14 | }
3 | 200 | 2012-01-15 | <-- not ok, user 200 should get warned and delete this
4 | 200 | 2012-01-16 | }
5 | 200 | 2012-01-17 | }--> 3 continuous days
6 | 200 | 2012-01-18 | }
7 | 200 | 2012-01-19 | <-- not ok, user 200 should get warned and delete this
8 | 201 | 2012-01-12 | }
9 | 201 | 2012-01-13 | }--> 3 continuous days
10 | 201 | 2012-01-14 | }
11 | 201 | 2012-01-16 | <-- ok, there is a one day gap here
12 | 201 | 2012-01-17 |
主要目标是查看给定的日期范围(通常是一个月)并确定不允许的日期。此外,我必须注意正确处理重叠日期,例如,如果我查看从 2012-02-01 到 2012-02-29 的日期范围,2012-02-01 可能是“休息”日,如果2012-01-29 到 2012-01-31 存在于同一用户的该表中。
【问题讨论】:
-
什么种类的 SQL,有些工具可以在这里提供显着帮助,有些则没有。
-
如果我扩展上一个示例,并说 1 月 28 日也在表格中,那么 1 月 31 日应该是休息日。您是否需要那种“对细节的关注”,或者说“2 月 1 日是我真正关注的第一天,2 月 1 日将显示为休息日”就足够了。 (或者更短一点,“我只会在感兴趣的范围前 2 天查看”?)
-
超出搜索日期范围的休息日期应该被忽略,所以是的 “我只会在感兴趣的范围前 2 天查看。”
标签: sql postgresql