hivesql之输出这个用户的 id 及第一次成功购买手机的日期和最后一次成功购买手机的日期,以及购买手机成功的次数

题目需求

通过商品信息表 (sku_info)、订单信息表 (order_info)、订单明细表 (order_detail),分析如果有一个用户成功下单两个及两个以上的购买成功的手机订单(购买商品为 xiaomi 10apple 12小米13)那么输出这个用户的 id 及第一次成功购买手机的日期和最后一次成功购买手机的日期,以及购买手机成功的次数。

期望结果如下:
user_id
(用户ID)
first_date
(首次时间)
last_date
(末次时间)
cn
(购买次数)
1012024-09-272024-09-283
1022024-10-082024-10-082
1032024-10-012024-10-033
1042024-10-022024-10-033
1052024-10-052024-10-053
1062024-10-062024-10-062
1072024-10-072024-10-073
需要用到的表:

订单信息表order_info

order_id
(订单ID)
user_id
(用户ID)
create_date
(下单日期)
total_amount
(订单金额)
11012024-09-3025000.00
31032023-10-0226000.00

订单明细表order_detail

order_detail_id
(订单明细ID)
order_id
(订单ID)
sku_id
(商品ID)
create_date
(下单日期)
price
(商品单价)
sku_num
(商品件数)
1212024-09-302000.002
3232024-09-305000.005
201042023-10-026000.001
251072023-10-02500.0024
291082023-10-022000.005

商品信息表sku_info

sku_id
(商品ID)
name
(商品名称)
category_id
(分类ID)
from_date
(上架日期)
price
(商品价格)
1xiaomi 1012024-01-013000.00
3洗碗机22024-02-014000.00
4自行车32024-01-015000.00
select distinct oi.user_id,
                first_value(od.create_date)
                            over (partition by oi.user_id order by od.create_date rows between unbounded preceding and unbounded following ) first_date,
                last_value(od.create_date)
                           over (partition by oi.user_id order by od.create_date rows between unbounded preceding and unbounded following )  last_date,
                count(*)
                      over (partition by oi.user_id order by od.create_date rows between unbounded preceding and unbounded following)        cn
from order_info oi
         join
     order_detail od
     on oi.order_id = od.order_id
         join
     sku_info si
     on od.sku_id = si.sku_id
where si.name in ('xiaomi 10', 'apple 12', 'xiaomi 13')
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值