WITH order_full_cte AS (
    SELECT
        *
    FROM
        orders o
        LEFT JOIN customers c USING (customer_id)
        LEFT JOIN products p USING (product_id)
)

SELECT
    o1.product_id,
    SUM(o1.quantity * o1.unit_price) AS total_sales,
    o1.unit_price,
    SUM(o1.quantity) AS total_quantity,
    ROUND(SUM(o1.quantity * o1.unit_price) / 12, 2) AS avg_monthly_sales,

    -- 每个产品的最大月销量
    (
        SELECT
            MAX(monthly_quantity)
        FROM (
            SELECT
                SUM(o2.quantity) AS monthly_quantity
            FROM
                order_full_cte o2
            WHERE
                o2.product_id = o1.product_id
            GROUP BY
                MONTH(o2.order_date)
        ) m
    ) AS max_monthly_quantity,

    -- 年购买量最高的客户;若并列,取年龄最小者
    (
        SELECT
            CASE
                WHEN c2.customer_age BETWEEN 1 AND 10 THEN '1-10'
                WHEN c2.customer_age BETWEEN 11 AND 20 THEN '11-20'
                WHEN c2.customer_age BETWEEN 21 AND 30 THEN '21-30'
                WHEN c2.customer_age BETWEEN 31 AND 40 THEN '31-40'
                WHEN c2.customer_age BETWEEN 41 AND 50 THEN '41-50'
                WHEN c2.customer_age BETWEEN 51 AND 60 THEN '51-60'
                ELSE '61+'
            END
        FROM (
            SELECT
                o2.customer_id,
                SUM(o2.quantity) AS yearly_qty
            FROM
                order_full_cte o2
            WHERE
                o2.product_id = o1.product_id
            GROUP BY
                o2.customer_id
        ) y
        JOIN order_full_cte c2
            ON c2.customer_id = y.customer_id
           AND c2.product_id = o1.product_id
        ORDER BY
            y.yearly_qty DESC,
            c2.customer_age ASC
        LIMIT 1
    ) AS customer_age_group

FROM
    order_full_cte o1
GROUP BY
    o1.product_id

ORDER BY
    total_sales DESC,
    o1.product_id ASC;