-- 1. 统计每种品类在售的商品数量 -> t1SELECT
a.category_id, b.category_name
,COUNT(DISTINCT a.sku_id)AS sku_ct
FROM t_sku_info a
LEFTJOIN t_category_info b
ON a.category_id = b.category_id
WHERE a.del_flag =0GROUPBY a.category_id, b.category_name
;
category_id
category_name
sku_ct
3
家用电器
2
6
数码产品
3
7
运动器材
2
SELECT-- 统计每种商品的销量
b.category_id, a.sku_id, b.goods_name
,SUM(quantity)AS order_sum
FROM t_order_detail a
LEFTJOIN t_sku_info b
ON a.sku_id = b.sku_id
WHERE b.del_flag =0GROUPBY a.sku_id, b.goods_name, b.category_id
;
category_id
sku_id
goods_name
order_sum
7
1202
划船机
4
6
1203
小米
10
3
1204
热水器
13
6
1205
OPPO
3
3
1206
吹风机
9
7
1207
跑步机
6
6
1211
苹果
4
-- 2. 统计每个品类中 最畅销的产品, 销量最高的产品 -> t2SELECT
category_id, sku_id, goods_name, order_sum
FROM(SELECT
category_id, sku_id, goods_name, order_sum
, RANK()OVER(PARTITIONBY category_id ORDERBY order_sum DESC)AS rk -- 每种品类中, 销量降序排列FROM(SELECT-- 统计每种商品的销量
b.category_id, a.sku_id, b.goods_name
,SUM(quantity)AS order_sum
FROM t_order_detail a
LEFTJOIN t_sku_info b
ON a.sku_id = b.sku_id
WHERE b.del_flag =0GROUPBY a.sku_id, b.goods_name, b.category_id
) c
) d
WHERE rk =1;
category_id
sku_id
goods_name
order_sum
rk
3
1204
热水器
13
1
3
1206
吹风机
9
2
6
1203
小米
10
1
6
1211
苹果
4
2
6
1205
OPPO
3
3
7
1207
跑步机
6
1
7
1202
划船机
4
2
category_id
sku_id
goods_name
order_sum
3
1204
热水器
13
6
1203
小米
10
7
1207
跑步机
6
-- 3. 合并t1,t2 数据SELECT
a.category_id, b.category_name, b.sku_ct, a.sku_id, a.goods_name, a.order_sum
FROM t2 a
LEFTJOIN t1 b
ON a.category_id = b.category_id
;