WITH t_12 AS (SELECT EXTRACT(MONTH FROM CAST(invoice_date AS date)) AS month, SUM(total) AS sum_total_2012 FROM invoice WHERE EXTRACT(YEAR FROM CAST(invoice_date AS timestamp)) = 2012 GROUP BY month), t_13 AS (SELECT EXTRACT(MONTH FROM CAST(invoice_date AS date)) AS month, SUM(total) AS sum_total_2013 FROM invoice WHERE EXTRACT(YEAR FROM CAST(invoice_date AS timestamp)) = 2013 GROUP BY month) SELECT t_12.month, sum_total_2012, sum_total_2013, ROUND((sum_total_2013 - sum_total_2012)/sum_total_2013*100) AS perc FROM t_12 LEFT JOIN t_13 ON t_12.month=t_13.month ORDER BY perc;