A1B3 vds34rve4-3f >td style="text-align:center;">2021年1月AA2B hvdhkc767-s3d >td style="text-align:center;">2021年1月EA986 bckd33rfvfbvdf 021年1月A1B3 jdbjkvshb3rdec 2021年1月 SFK3 bhabsd-bbc83ccs 021年2月1日//tr>AA2B hcbadcbsbc7cd 2021年3月1日 A1B3 hjjac73an83-3fc 2021年7月1日 DEH32 gdyafjk-24vfd 2021年7月1日 A1B3 jkhbdj434jcbjke 2021年7月1日 AA2B jkkcbjq90ksnc 021年8月1日//tr>AA2B cjbugd3ahsddka 021年8月1日//tr>A1B3 kbcq7w69ufj4t4 021年9月1日//tr>SFK3 bcdub7wklcna8 2021年9月1日 EA986 cbyatea4jwndns 021年9月1日A1B3 biqbdepaljkcl9 2021年9月1日 AA2B nuqya8wownd2ln2 021年9月1日//tr>A1B3 ndkuq2uowmdlqn 021年9月1日
摘要:我想在7天内获得拥有3个及更多orderid的客户列表。如果客户满足每个日期的标准,那么一个客户可能会出现多次。
表名:T1
订单ID您可以使用lead()
。但要计数就更难了。从该条件成立的日期开始:
select t.*
from (select t.*,
lead(createdat, 2) over (partition by customerid order by createdat) as date_2
from t
) t
where date_2 < createdat + interval '7 day';
如果你真的需要计数,那么有一种方法是自加入:
select t.customerid, t.createdat, count(*)
from t join
t t2
on t2.customerid = t.customerid and
t2.createdat >= t.createdat and
t2.createdat < t.createdat + interval '7 day'
group by t.customerid, t.createdat
having count(*) >= 3;