我需要在数据库中找到连续 7 天或更多天的数据的所有成员。该表设置为 member_id 和 data_date。有数据的每一天都有重复的 member_id。
datediff
我使用涉及or的MySQL 找到了一些答案dateadd
,但我不确定如何在 PostgreSQL 8.2.15 中执行此操作。下面是表格的示例,但包含更多行。
+------------+------------+
| member_id | data_date |
+------------+------------+
| 0000001 | 2018-04-10 |
| 0000005 | 2018-04-16 |
| 0000001 | 2018-04-11 |
| 0000002 | 2018-04-12 |
| 0000003 | 2018-04-13 |
| 0000004 | 2018-04-12 |
| 0000005 | 2018-04-15 |
| 0000003 | 2018-04-19 |
| 0000002 | 2018-04-17 |
| 0000001 | 2018-04-18 |
| 0000005 | 2018-04-10 |
| 0000002 | 2018-04-18 |
| 0000001 | 2018-04-08 |
| 0000002 | 2018-04-03 |
| 0000003 | 2018-04-02 |
| 0000004 | 2018-04-14 |
| 0000005 | 2018-04-15 |
| 0000003 | 2018-04-16 |
| 0000002 | 2018-04-19 |
| 0000001 | 2018-04-14 |
+------------+------------+
(member_id, data_date)
被定义UNIQUE
。
这个简单的查询应该适用于您的过时版本:
在 Postgres 中,您可以只添加
integer
到 adate
以获得第二天。并且可能也很快 - 只要您没有更长的条目条纹在第一步中产生许多欺骗。
或者:
尽早更新到当前版本的 Postgres。
您的版本非常陈旧且不安全。供参考 8.2 最后一次支持是在 2011 年。它是在 2006 年发布的。它缺少
此外,我们无法轻松配置您的设置来测试我们的查询。升级您的 PostgreSQL 版本;如果您发现这很难做到,请考虑寻求顾问。
我想你想要的是像
但是我无法测试它并且您没有提供
CREATE TABLE
或INSERT
声明。