WITH t AS ( SELECT p.product_id, p.product_name, p.category, -- 确保 supplier_name 不为空,关联失败时用默认值(或直接保留 NULL 后续处理) COALESCE(s.supplier_name, 'None') AS supplier_name, -- 限定订单日期范围,无订单时销售额为 0 COALESCE(SUM(CASE WHEN o.order_date BETWEEN '2024-04-01' AND '2024-06-30' THEN o.total_amount ELSE 0 END), 0) AS q2_2024_sales_total FROM product_info p -- 左连接订单表:保留所有商品,即使无订单 LEFT JOIN order_info o ON p.product_id = o.product_id -- 左连接供应商表:确保商品与供应商正确关联(需确认关联字段是否为 product_id) LEFT JOIN supplier_info s ON p.product_id = s.product_id GROUP BY p.product_id, p.product_name, p.category, s.supplier_name -- 分组需包含 supplier_name ) SELECT t.product_id, t.product_name, t.q2_2024_sales_total, -- 按 category 分区,销售额降序排名(需与预期逻辑一致) DENSE_RANK() OVER ( PARTITION BY t.category ORDER BY t.q2_2024_sales_total DESC ) AS category_rank, t.supplier_name FROM t -- 按 product_id 排序,与预期输出一致 ORDER BY t.product_id;