aboutsummaryrefslogtreecommitdiff
path: root/content/posts/postgres-aggregates/merging-ctes.sql
diff options
context:
space:
mode:
Diffstat (limited to 'content/posts/postgres-aggregates/merging-ctes.sql')
-rw-r--r--content/posts/postgres-aggregates/merging-ctes.sql34
1 files changed, 34 insertions, 0 deletions
diff --git a/content/posts/postgres-aggregates/merging-ctes.sql b/content/posts/postgres-aggregates/merging-ctes.sql
new file mode 100644
index 0000000..2061efd
--- /dev/null
+++ b/content/posts/postgres-aggregates/merging-ctes.sql
@@ -0,0 +1,34 @@
+EXPLAIN (
+ ANALYZE,
+ COSTS,
+ VERBOSE,
+ BUFFERS
+) WITH product_reviews AS (
+ SELECT
+ product_id,
+ COUNT(id) AS num_reviews
+ FROM
+ reviews
+ GROUP BY
+ product_id),
+ product_orders AS (
+ SELECT
+ product_id,
+ COUNT(id) AS num_orders
+ FROM
+ orders
+ GROUP BY
+ product_id
+)
+ SELECT
+ products.id,
+ products.name,
+ COALESCE(product_reviews.num_reviews, 0) AS num_reviews,
+ COALESCE(product_orders.num_orders, 0) AS num_orders
+FROM
+ products
+ LEFT JOIN product_reviews ON products.id = product_reviews.product_id
+ LEFT JOIN product_orders ON products.id = product_orders.product_id;
+
+-- WHERE
+-- products.id % 10 = 0