Hive 刷题——查询销售件数高于品类平均数的商品
需求描述
从订单明细表(order_detail)中查询累积销售件数高于其所属品类平均数的商品
期望结果如下:
sku_id
|
name
|
sum_num
|
cate_avg_num
|
2
|
手机壳
|
6044
|
1546
|
5
|
破壁机
|
242
|
194
|
7
|
热水壶
|
252
|
194
|
8
|
微波炉
|
253
|
194
|
12
|
遮阳伞
|
20682
|
5373
|
需要用到的表:
商品信息表:sku_info
sku_id(商品id)
|
name(商品名称)
|
category_id(分类id)
|
from_date(上架日期)
|
price(商品价格)
|
1
|
xiaomi 10
|
1
|
2020-01-01
|
2000
|
6
|
洗碗机
|
2
|
2020-02-01
|
2000
|
9
|
自行车
|
3
|
2020-01-01
|
1000
|
订单明细表:order_detail
order_detail_id(订单明细id)
|
order_id(订单id)
|
sku_id(商品id)
|
create_date(下单日期)
|
price(商品单价)
|
sku_num(商品件数)
|
1
|
1
|
1
|
2021-09-30
|
2000.00
|
2
|
2
|
1
|
3
|
2021-09-30
|
5000.00
|
5
|
22
|
10
|
4
|
2020-10-02
|
6000.00
|
1
|
23
|
10
|
5
|
2020-10-02
|
500.00
|
24
|
24
|
10
|
6
|
2020-10-02
|
2000.00
|
5
|
参考SQL
select sku_id, name, sum_num, cate_avg_num from (select od.sku_id, name, category_id, sum(sku_num) sum_num from order_detail od join sku_info si on od.sku_id = si.sku_id group by od.sku_id, name, category_id) t join (select category_id, cast(avg(sum_num) as bigint) cate_avg_num from (select od.sku_id, name, category_id, sum(sku_num) sum_num from order_detail od join sku_info si on od.sku_id = si.sku_id group by od.sku_id, name, category_id) t group by category_id) t1 on t.category_id = t1.category_id and sum_num > cate_avg_num;
分类:
HIve
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下