select 
    p.product_id,
    sum((unit_price-purchase_price)*quantity) as total_profit,
    round((avg(unit_price)-purchase_price)/purchase_price*100,2) as profit_margin
from sales_orders s
join purchase_prices p using(product_id)
where year(order_date)=2023 
group by 1
order by 1;