Last active
June 19, 2018 11:51
-
-
Save samuelbalogh/3cac506d9770377f3558b8b75cd34cfe to your computer and use it in GitHub Desktop.
migration with common table expressions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WITH | |
migrated_invoices AS ( | |
UPDATE invoices | |
SET invoice_type='cutting_edge', | |
WHERE invoice_type='oldie' | |
RETURNING id, status, amount, project_id | |
), | |
invoice_amounts_by_status AS (SELECT | |
project_id AS invoice_project_id, | |
sum((CASE WHEN (migrated_invoices.status = 'paid') | |
THEN (migrated_invoices.amount) | |
ELSE 0 | |
END) | |
) AS invoice_amount_paid, | |
sum((CASE | |
WHEN (migrated_invoices.status = 'pending')) | |
THEN (migrated_invoices.amount) | |
ELSE 0 | |
END) | |
) AS invoice_amount_projected, | |
array_agg(migrated_invoices.id) AS additional_invoice_ids | |
FROM migrated_invoices | |
GROUP BY project_id) | |
UPDATE projects | |
SET | |
invoice_ids = array_cat(projects.invoice_ids, additional_invoice_ids), | |
total_paid = total_paid + invoice_amount_paid, | |
total_projected = total_projected + invoice_amount_projected, | |
FROM migrated_invoices, invoice_amounts_by_status | |
WHERE projects.id = migrated_invoices.project_id AND | |
projects.id = invoice_project_id |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment