我有一个表,其中列出了每个客户的交易,沿着交易发生的日期和花费的金额。我想做的是获得一个在任何30天内花费3000英镑或更多的所有客户的列表。
我可以得到一个名单,谁花了£ 3 k或更多的 * 过去 * 30天使用下面的代码,但我不知道如何适应这一点,以涵盖 * 任何 * 30天期间。任何帮助将不胜感激,请!
select *
from
(
select customer_id, sum(spend) as total_spend
from transaction_table
where transaction_date between (current date - 30 days) and current date
group by customer_id
)
where total_spend >=3000
;
2条答案
按热度按时间xzv2uavs1#
可以将
SUM()
与窗口函数和窗口框架30一起使用。例如:对于数据集:
结果:
请参阅db<>fiddle上的运行示例。
ufj5ltwl2#
请尝试以下操作。
其思想是计算每行过去30天的SPEND运行总和。