【发布时间】:2018-09-19 18:39:06
【问题描述】:
我正在学习如何使用 SQL CTE,我想比较两个查询以获得相同的答案(使用 postgresql)但我失败了,有人可以帮忙吗?
我创建了这个查询,我有每个电影标题的总数(Sakila 数据库):
SELECT COUNT(r.rental_id) rental_count,
f.title as "Film"
FROM film f
JOIN inventory i
ON f.film_id = i.film_id
JOIN rental r USING (inventory_id)
GROUP BY f.title
ORDER BY rental_count DESC;
我想使用 WITH (CTE) 来做同样的事情,为此我创建了这段代码:
WITH table1 AS (
SELECT f.film_id,
f.title as "Film"
FROM film f),
table2 AS (
SELECT r.inventory_id,
COUNT(r.rental_id) rental_count,
i.film_id,
i.inventory_id
FROM inventory i
JOIN rental r USING (inventory_id)
GROUP BY r.inventory_id, i.film_id, i.inventory_id)
SELECT *
FROM table1
JOIN table2
ON table1.film_id = table2.film_id;
问题是结果不是显示每部电影片名的总数,而是单独显示每部电影片名。
【问题讨论】:
标签: sql postgresql common-table-expression