我有这个表(这是示例,原始的大约是800000行):

    purchase_datetime      customer_id    value    purchase_id
    2013-01-08 17:13:29      45236262       92        2526373
    2013-01-03 15:42:35      45236262       16        2565373
    2013-05-08 17:40:13      45236262       42        2522373
    2013-03-08 09:04:52      45236262       636       2563373
    2013-12-08 12:12:24      45236262       23        2505573
    2013-07-08 22:35:53      35536272       73        2526423
    2013-07-08 09:52:03      35536272        4        5526373
    2013-010-08 16:23:29     52626262       20        2226373
...
    2013-04-08 17:49:31      52626262       27        4526373
    2013-12-09 20:40:53      52626262       27        4626373

现在我需要找到客户过去1个月、3个月、6个月和12个月的总花费(价值)。
我不知道该怎么处理日期时间来选择最后几个月。

最佳答案

可以使用条件聚合:

select customer_id,
       sum(case when purchase_datetime >= current_timestamp - interval '1 month'
                then value else 0
           end) as amount_1month,
       sum(case when purchase_datetime >= current_timestamp - interval '3 month'
                then value else 0
           end) as amount_3month,
       sum(case when purchase_datetime >= current_timestamp - interval '6 month'
                then value else 0
           end) as amount_6month
. . .

关于sql - 最近几个月在SQL中花费的总金额,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44134963/

10-14 09:22