Hive 刷题——查看每件商品的售价涨幅情况

发布时间 2023-08-19 15:37:38作者: 晓枫的春天

题目描述

从商品价格变更明细表(sku_price_modify_detail),得到最近一次价格的涨幅情况,并按照涨幅升序排序。

结果如下:

sku_id
<string>
(商品id)
price_change
<decimal(16,2)>
(涨幅)
8 -200.00
9 -100.00
2 -70.00
11 -16.00
12 -15.00
3 1.00
5 10.00
10 10.00
7 12.00
6 12.00
1 100.00
4 400.00

需要用到的表:

商品价格变更明细表:sku_price_modify_detail

sku_id(商品id)new_price(本次变更之后的价格)change_date(变更日期)
1 1900.00 2021-09-25
1 2000.00 2021-09-26
2 80.00 2021-09-29
2 10.00 2021-09-30

参考实现

select sku_id, cast(new_price - last_price as decimal(16, 2)) price_change
from (select *
           , lag(new_price, 1) over (partition by sku_id order by change_date ) last_price
           , row_number() over (partition by sku_id order by change_date desc ) rn
      from sku_price_modify_detail) t
where rn = 1;

总结

本题是考察 lag 函数的一般用法,只要掌握,其用法即可。