HiveSQL 面试题

阅读: 评论:0

HiveSQL 面试题

HiveSQL 面试题

1 需求

从订单明细表(order_detail)中统计出每种商品销售件数最多的日期及当日销量,如果有同一商品多日销量并列的情况,取其中的最小日期。

  • 订单明细表 order_detail
order_detail_id(订单明细id)order_id(订单id)sku_id(商品id)create_date(下单日期)price(商品单价)sku_num(商品件数)
1112021-09-302000.002
2132021-09-305000.005
221042020-10-026000.001
231052020-10-02500.0024
241062020-10-022000.005
  • 期望结果
sku_id (商品id)create_date (销量最高的日期)sum_num (销量)
12021-09-309
22021-10-025800
32021-10-059
42021-10-0710
52021-10-0347
62021-10-038
72021-10-0558
82020-10-0859
92021-10-0145
102020-10-0894
112020-10-0895
122021-10-0320400

2 解答

  • 思路

由于需要统计每一件商品的销售件数最多的日期,针对每一个 sku_id 进行统计,所以需要使用窗口函数对数据按照指定的队则进行排名,需要注意的时排名时需要进行倒序,并且相同的排名需要使用二级字段来确定先后。

  • 实现

1 按照商品 + 日期进行分组,统计每个商品在每一天的总销量

SELECT sku_id,create_date,sum(sku_num) sum_num
from order_detail
group by sku_id, create_date;
sku_idcreate_datesum_num
12020-10-082
12021-09-272
12021-10-018
12021-10-029
12021-10-034
12021-10-045
12021-10-055
12021-10-068
12021-10-078
102020-10-0894
102021-10-0248
102021-10-0369
102021-10-0527
102021-10-0637
102021-10-0724

2 在步骤 1 的基础上,开窗进行排名,注意排序函数中的 order by sum_num desc,create_date asc

SELECT sku_id,create_date,sum_num,row_number() over (partition by sku_id order by sum_num desc,create_date asc) rn
from (SELECT sku_id,create_date,sum(sku_num) sum_numfrom order_detailgroup by sku_id, create_date) t1;
sku_idcreate_datesum_numrn
12021-10-0291
12021-10-0182
12021-10-0683
12021-10-0784
12021-10-0455
12021-10-0556
12021-10-0347
12020-10-0828
12021-09-2729
102020-10-08941
102021-10-03692
102021-10-02483
102021-10-06374
102021-10-05275
102021-10-07246
112020-10-08951
112021-10-03612
112021-10-06463

3 生成排名之后,限制排名为 1 的记录即可得到结果

SELECT sku_id, create_date, sum_num
from (SELECT sku_id,create_date,sum_num,row_number() over (partition by sku_id order by sum_num desc,create_date asc) rnfrom (SELECT sku_id,create_date,sum(sku_num) sum_numfrom order_detailgroup by sku_id, create_date) t1) t2
where rn = 1
order by sku_id, create_date, sum_num;
sku_idsum_numcreate_date
192021-10-02
258002021-10-02
392021-10-05
4102021-10-07
5472021-10-03
682021-10-03
7582021-10-05
8592020-10-08
9452021-10-01
10942020-10-08
11952020-10-08
12204002021-10-03

本文发布于:2024-02-05 05:48:23,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170725530963563.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:面试题   HiveSQL
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23