-->

发现谁没有老的订阅阈值之内重新订阅用户(Find subscribers who did not r

2019-09-28 01:55发布

我有PostgreSQL的10.5表订阅:

id  user_id  starts_at  ends_at
--------------------------------
1   233      02/04/19   03/03/19
2   233      03/04/19   04/03/19
3   296      02/09/19   03/08/19
4   126      02/01/19   02/28/19
5   126      03/01/19   03/31/19
6   922      02/22/19   03/22/19
7   111      01/22/19   02/21/19
8   111      02/22/19   03/21/19

我想看看没有内时,他们的月订阅结束2天开始,一个订阅谁user_ids。 对于在3月结束的订阅用户。

鉴于上面的表格,结果将是:

user_id
-------
296
126
922
111

我怎么会去把该查询一起三月?

Answer 1:

不存在应做你想要什么:

select t.*
from t
where ends_at >= '2019-03-01' and ends_at < '2019-04-01' and
      not exists (select 1
                  from t t2
                  where t2.user_id = t.user_id and
                        t2.starts_at >= t.ends_at and
                        t2.starts_at <= t.ends_at + interval '2 day'
                 );


文章来源: Find subscribers who did not resubscribe within threshold of old subscription