select product_id,product_name,category_id,sales_amount,profit_rate
from(
    select p.product_id,product_name,category_id,sales_amount,
    rank()over(partition by category_id order by sales_amount desc) as rk,
    round((sales_amount-cost_amount)/sales_amount,2) profit_rate
    from product_category p join sales_and_profit s on p.product_id = s.product_id
) t1
where t1.rk <=3 and profit_rate > 0.20