SELECT p.name,DATE_FORMAT(t.transaction_date,"%Y-%m") month,AVG(tsl.unit_price_before_discount) avg_cost FROM products p JOIN transaction_sell_lines tsl ON p.id=tsl.product_id JOIN transactions t ON tsl.transaction_id=t.id WHERE t.type="sell" GROUP BY p.id,p.name,DATE_FORMAT(t.transaction_date,"%Y-%m") ORDER BY p.name,month;