Mysql 获取在过去7天内有交易且在30天内只有一个交易的用户

Mysql 获取在过去7天内有交易且在30天内只有一个交易的用户,mysql,sql,Mysql,Sql,我有一张如下表,今天是2021-05-25 用户ID 交易日期 1. 2021-05-21 1. 2021-05-12 4. 2021-05-25 1. 2021-04-03 3. 2021-05-15 3. 2021-04-02 4. 2021-03-25 您可以将聚合与以下功能结合使用: 如果您需要事务详细信息,它会更加复杂: select t.* from transactions t where t.transactiondate >= curdate() - interval 7

我有一张如下表,今天是2021-05-25

用户ID 交易日期 1. 2021-05-21 1. 2021-05-12 4. 2021-05-25 1. 2021-04-03 3. 2021-05-15 3. 2021-04-02 4. 2021-03-25
您可以将聚合与以下功能结合使用:

如果您需要事务详细信息,它会更加复杂:

select t.*
from transactions t
where t.transactiondate >= curdate() - interval 7 day and
      not exists (select 1
                  from transactions t2
                  where t2.userid = t.userid and
                        t2.transactiondate >= curdate() - interval 30 day and
                        t2.transactiondate <> t.transactiondate
                 );

间隔30的过滤器正好用于从表中获取一段数据。因为这只是一个性能改进,我将其更改为7,因为超过7天的记录将被having子句拒绝。谢谢!让maxtransactionDate>today-7生效@Jaimerq。不完全是。代码必须保证在前7天内有交易,但在前23天内没有。
select t.*
from transactions t
where t.transactiondate >= curdate() - interval 7 day and
      not exists (select 1
                  from transactions t2
                  where t2.userid = t.userid and
                        t2.transactiondate >= curdate() - interval 30 day and
                        t2.transactiondate <> t.transactiondate
                 );