SELECT dc.dt, revenue * 100 / costs AS ROI FROM (SELECT CAST(DATE_TRUNC('month', created_at) AS date) AS dt, SUM(costs) AS costs FROM tools_shop.costs GROUP BY dt) dc JOIN (SELECT CAST(DATE_TRUNC('month', paid_at) AS date) AS dt, SUM(total_amt) AS revenue FROM tools_shop.orders GROUP BY dt) dr ON dc.dt = dr.dt ORDER BY dc.dt;