SELECT
category,
orders_cnt,
buyers_cnt,
items_qty,
revenue,
-- ✅ 处理除以0:如果orders_cnt=0,返回0
IFNULL(ROUND(revenue/orders_cnt,2),0) avg_order_value,
-- ✅ 正确排名:revenue降序优先,orders_cnt次之,category最后
RANK() OVER(ORDER BY revenue DESC, orders_cnt DESC, category) rank_by_revenue
FROM(
-- 子查询:计算基础指标
SELECT
category,
-- ✅ 去重统计订单数
COUNT(DISTINCT o.order_id) orders_cnt,
-- ✅ 去重统计买家数
COUNT(DISTINCT o.buyer_id) buyers_cnt,
-- ✅ 总销售件数
SUM(i.qty) items_qty,
-- ✅ 总销售额 = 单价×数量
SUM(p.price * i.qty) revenue
FROM product p
-- ✅ 先关联商品和订单明细
LEFT JOIN order_items i USING(product_id)
-- ✅ 再关联订单主表
LEFT JOIN orders o USING(order_id)
-- ✅ 关键:只保留8月的订单
WHERE LEFT(order_date,7) = '2024-08'
GROUP BY category
) tmp
-- ✅ 外层排序和子查询分组、窗口函数排序一致
ORDER BY
revenue DESC, orders_cnt DESC, category