如何用Teradata SQL筛选近30天内至少有2笔交易的客户
Teradata SQL 实现代码
替换代码中的表名为你的实际交易记录表名即可直接运行:
SELECT ID, NAME FROM transaction_table -- 替换为实际表名 WHERE -- DATE字段为日期类型时用该条件,统计基准为题目指定的2021-09-13 DATE >= DATE '2021-09-13' - 30 -- 如果DATE字段是字符串格式存储,替换为下面的条件 -- TO_DATE(DATE, 'DD-MM-YYYY') >= DATE '2021-09-13' - 30 -- 如果需要动态取当前日期作为统计基准,替换为下面的条件 -- DATE >= CURRENT_DATE - 30 GROUP BY ID, NAME HAVING COUNT(1) >= 2
逻辑说明
- WHERE层先过滤符合时间范围的交易数据,减少后续计算的数据量,提升查询性能
- 按客户ID、姓名分组,同一客户的ID和姓名唯一对应,分组后统计每个客户的交易笔数
- HAVING层筛选交易笔数≥2的分组,最终输出结果和预期完全一致
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

