hivesql之从订单信息表 (order_info) 中统计每个用户截止到某个下单日期的累积消费金额,以及每个用户在其每个下单日期的 VIP 等级

题目需求

从订单信息表 (order_info) 中统计每个用户截止到某个下单日期的累积消费金额,以及每个用户在其每个下单日期的 VIP 等级。计算规则如下:

  • 当累积消费金额为 X 时:
    • 0<=X < 10000,则为普通会员
    • 10000 <= X < 30000,则为青铜会员
    • 30000 <= X < 50000,则为白银会员
    • 50000 <= X < 80000,则为黄金会员
    • 80000 <= X < 100000,则为铂金会员
    • X >= 100000,则为钻石会员

期望结果如下:

user_idcreate_datesum_so_farvip_level
1012024-09-2799500.00铂金会员
1012024-09-2899500.00铂金会员
1012024-09-29142800.00钻石会员
1012024-09-30143660.00钻石会员
1022024-10-01171680.00钻石会员
1032024-10-0217850.00青铜会员
1042024-10-0369980.00黄金会员
1052024-10-04120100.00钻石会员
1062024-10-049390.00普通会员
1062024-10-05119150.00钻石会员
1072024-10-0669850.00黄金会员
1082024-10-07155770.00钻石会员
1092024-10-0824020.00青铜会员
1102024-10-09153500.00钻石会员

需要用到的表:

订单信息表:order_info
order_iduser_idcreate_datetotal_amount
11012024-09-3029000.00
101032024-10-0228000.00
select
  user_id,
  create_date,
  sum_so_far,
  case
    when sum_so_far >= 0 and sum_so_far < 10000 then '普通会员'
    when sum_so_far >= 10000 and sum_so_far < 30000 then '青铜会员'
    when sum_so_far >= 30000 and sum_so_far < 50000 then '白银会员'
    when sum_so_far >= 50000 and sum_so_far < 80000 then '黄金会员'
    when sum_so_far >= 80000 and sum_so_far < 100000 then '白金会员'
    when sum_so_far >= 100000 then '钻石会员'
    else '其他'
  end as vip_level
from
  (
    select
      user_id,
      create_date,
      sum(total) over (partition by user_id order by create_date ) sum_so_far
    from
      (
        select
          user_id,
          create_date,
          sum(total_amount) total
        from
          order_info
        group by
          user_id,
          create_date
      ) t
  ) tt
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值