Я изучаю, как использовать 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;
проблема заключается в том, что в результате показывается не общее название каждого фильма, а отдельное название каждого фильма.