过滤过去2年中每年至少有3笔交易的客户

问题描述 投票:1回答:2

我有一个称为cust_trans的客户交易表,其中,客户进行的每笔交易都存储为一行。我还有一个名为visit_date的列,其中包含交易日期。我想过滤过去2年中每年至少进行3]次交易的客户。

数据如下所示

Id          visit_date    
----        ------        
1           01/01/2019     
1           01/02/2019     
1           01/01/2019      
1           02/01/2020      
1           02/01/2020      
1           03/01/2020      
1           03/01/2020      
2           01/02/2019 
3           02/04/2019     

我想知道过去两年中每年至少拜访过3次的客户

即我想要下面的输出。

id    
---       
1       

从客户表中,只有一个人至少访问了3次,为期2年。

我尝试使用以下查询,但它只会检查总访问次数是否大于或等于3

select id
 from 
  cust_scan
         GROUP  by 
         id
         having count(visit_date) >= 3
         and year(date(max(visit_date)))-year(date(min(visit_date))) >=2

我将不胜感激,谢谢您的指导或建议

我有一个称为cust_trans的客户交易表,其中,客户进行的每笔交易都存储为一行。我还有一个名为visit_date的列,其中包含交易日期。我...

sql date select group-by presto
2个回答
0
投票

[一种选择是生成一个不同的id列表,将其与最近两年交叉连接,然后将原始表带有left join。然后,您可以汇总以计算每个id每年有多少次访问。最后一步是再次聚合,并使用having子句进行过滤


0
投票

我假设您是指日历年。我想我会使用两个聚合级别:

© www.soinside.com 2019 - 2024. All rights reserved.