/*
需要注意在
		sum(sales_amount) as total_sales_amount,
        (sum(sales_amount) - sum(cost_amount)) / sum(sales_amount) as profit_rate
这部分为sum(sales_amount)指定的别名不能为sales_amount,最外层的查询再次指定为sales_amount即可
*/
select
    product_id,
    product_name,
    category_id,
    total_sales_amount as sales_amount,
    round(profit_rate, 2) as profit_rate
from
    (
        select
            p.product_id,
            product_name,
            category_id,
            total_sales_amount,
            profit_rate,
            rank() over(partition by category_id order by total_sales_amount desc) as ranking
        from 
            product_category as p
            left join 
            (
                select
                    product_id,
                    sum(sales_amount) as total_sales_amount,
                    (sum(sales_amount) - sum(cost_amount)) / sum(sales_amount) as profit_rate
                from sales_and_profit
                group by product_id                 
            ) as s on p.product_id=s.product_id
    ) as ranking_tb
where profit_rate > 0.3 and ranking < 4
order by 
    category_id, sales_amount desc, product_id