这是一个奇怪的问题。我不知道这是否可行。
假设我有下表:
person | product | trans | purchase_date
-------+----------+--------+---------------
jim | square | aaaa | 2013-03-04 00:01:00
sarah | circle | aaab | 2013-03-04 00:02:00
john | square | aac1 | 2013-03-04 00:03:00
john | circle | aac2 | 2013-03-04 00:03:10
jim | triangle | aad1 | 2013-03-04 00:04:00
jim | square | abcd | 2013-03-04 00:05:00
sarah | square | efgh | 2013-03-04 00:07:00
jim | circle | ijkl | 2013-03-04 00:22:00
sarah | circle | mnop | 2013-03-04 00:24:00
sarah | square | qrst | 2013-03-04 00:26:00
sarah | circle | uvwx | 2013-03-04 00:44:00
我需要知道任何人购买的正方形和圆形(或圆形和正方形)之间的差异何时超过 10 分钟。理想情况下,我也想知道这种差异,但这不是必需的。
因此,这就是我需要的:
person | product | trans | purchase_date
-------+----------+--------+---------------
jim | square | abcd | 2013-03-04 00:05:00
jim | circle | ijkl | 2013-03-04 00:22:00
sarah | square | efgh | 2013-03-04 00:07:00
sarah | circle | mnop | 2013-03-04 00:24:00
sarah | square | qrst | 2013-03-04 00:26:00
sarah | circle | uvwx | 2013-03-04 00:44:00
这将每天运行,所以我将添加一个“where”子句以确保查询不会失控。另外,我知道可能会出现多笔交易(例如,购买一个圆圈之间有 20 分钟,然后是 20 分钟购买一个正方形,然后是 20 分钟再次购买一个圆圈,这意味着有 2 个实例时差超过 10 分钟)。
有什么建议吗?我在 postgres 8.1.23