如何编写SQL查询统计一周内消费总额超1000美元的用户ID
该需求完全可以通过SQL实现,只需在原有稳定运行的查询基础上调整时间范围、增加分组聚合与分组后筛选逻辑即可。
调整逻辑说明
- 时间过滤条件从原来的
INTERVAL -1 DAY修改为INTERVAL -7 DAY,覆盖最近一周的消费记录 - 按用户ID字段ColumnA分组,对PurchaseAmount求和后除以100得到美元计价的总消费金额(优先聚合再做单位转换可避免精度损失)
- 新增HAVING子句,对聚合后的总消费金额做筛选,仅保留超过1000美元的用户
- 你可以根据实际需求选择是否保留原有
PurchaseAmount/100 > 299的单笔金额过滤条件:如果要统计一周内所有消费的总金额直接删除该条件即可,如果仍然只统计单笔超过299美元的消费再算总和则保留。
修改后的SQL示例
SELECT ColumnA AS 用户ID, SUM(PurchaseAmount)/100 AS 周总消费金额_美元 FROM TableX JOIN TableY ON TableX.A = TableY.B WHERE PurchaseTimestamp >= DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL -7 DAY) -- 不需要筛选单笔消费超299美元就删除下面这行 AND PurchaseAmount/100 > 299 GROUP BY ColumnA HAVING SUM(PurchaseAmount)/100 > 1000
基于你提供的样本数据执行该SQL,会直接返回用户ID 1和3,完全符合你期望的结果。
内容的提问来源于stack exchange,提问作者clucko87
相关产品推荐
相关产品推荐

