题目需求
从订单详情表中(order_detail),通过销售件数对商品进行分类,0-5000为冷门商品,5001-19999位一般商品,20000往上为热门商品,并求出不同类别商品的数量。
期望结果如下:
category (类型) | cn (数量) |
---|---|
一般商品 | 1 |
冷门商品 | 10 |
热门商品 | 1 |
需要用到的表:
订单明细表: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 |
… | … | … | … | … | … |
实现一
-- 3) 统计不同类别商品的数量
select category,
count(*) as cn
from (
-- 2) 通过销售件数对商品进行分类
select sku_id,
case
when 0 <= sku_num_sum and sku_num_sum <= 5000 then '冷门商品'
when 5001 <= sku_num_sum and sku_num_sum <= 19999 then '一般商品'
when 20000 <= sku_num_sum then '热门商品'
end as category
from (
-- 1) 计算出每个 sku_id 的总销售件数
select sku_id,
sum(sku_num) as sku_num_sum
from order_detail
group by sku_id
) t1
) t2
group by category;
题目来源
http://practice.atguigu.cn/#/question/24/desc?qType=SQL