with t2 as(
    select
        o.*,
        c.customer_age,
        month(o.order_date) as order_month
    from orders o left join customers c
    on o.customer_id=c.customer_id
    left join products p on o.product_id=p.product_id
            )

select
    t1.product_id,
    t1.total_sales,
    t1.unit_price,
    t1.total_quantity,
    round(t1.avg_monthly_sales,2) as avg_monthly_sales,
    t6.max_monthly_quantity,
    case
        when t7.customer_age between 1 and 10 then '1-10'
        when t7.customer_age between 11 and 20 then '11-20'
        when t7.customer_age between 21 and 30 then '21-30'
        when t7.customer_age between 31 and 40 then '31-40'
        when t7.customer_age between 41 and 50 then '41-50' 
        when t7.customer_age between 51 and 60 then '51-60'
        end as customer_age_group

from

(select
    o.product_id,
    p.unit_price,
    sum(o.quantity*p.unit_price) as total_sales,
    sum(o.quantity) as total_quantity,
    sum(o.quantity*p.unit_price)/12 as avg_monthly_sales
 from 
    orders o left join customers c on o.customer_id=c.customer_id
    left join products p on o.product_id=p.product_id
 group by 
    o.product_id,p.unit_price
) t1

left join

(select
    t3.product_id,
    max(t3.monthly_quantity) as max_monthly_quantity
 from
    (select
        product_id,
        sum(quantity) as monthly_quantity
     from t2 group by product_id,order_month
    ) t3
 group by t3.product_id
) t6

on t1.product_id=t6.product_id

left join

(select
    t5.product_id,t5.customer_age 
 from
    (select
        t4.product_id,
        t4.customer_id,
        t4.customer_age,
        row_number() over(partition by product_id order by t4.order_sum desc,customer_age asc) as ranking 
    from
        (select
            product_id,
            customer_id,
            customer_age,
            sum(quantity) as order_sum
        from t2
        group by 
            product_id,customer_id,customer_age
        ) t4
    ) t5
 where t5.ranking=1
) t7

on t1.product_id=t7.product_id

order by t1.total_sales desc,t1.product_id asc