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;