SQL-окна работают в PostgreSQL - PullRequest
0 голосов
/ 17 сентября 2018

Я новичок в SQL и пытаюсь сделать запрос к базе данных, используя PostgreSQL (9.6).

Когда я пишу следующий код и синтаксис ошибки с функцией Windows:

/* Ranking total of rental movie by film category (I use the sakila database) */

SELECT category_name, rental_count
FROM
    (SELECT c.name category_name, Count(r.rental_id) rental_count
    FROM category c
    JOIN film_category USING (category_id)
    JOIN inventory USING (film_id)
    JOIN rental r USING (inventory_id)
    JOIN film f USING (film_id)
    GROUP BY 1, 2
    ORDER by 2, 1
     ) sub
RANK() OVER (PARTITION BY category_name ORDER BY rental_count DESC) AS total_rank

1 Ответ

0 голосов
/ 17 сентября 2018

Вам не нужен подзапрос:

SELECT c.name as category_name, COUNT(*) as rental_count,
       ROW_NUMBER() OVER (PARTITION BY c.name ORDER BY COUNT(*) DESC)
FROM category c JOIN
     film_category USING (category_id) JOIN
     inventory USING (film_id) JOIN
     rental r USING (inventory_id) JOIN
     film f USING (film_id)
GROUP BY 1
ORDER by 2, 1;

Вам также не нужно объединение с film, потому что вы ничего не используете из этой таблицы.

Ваш запроспроисходит сбой, потому что список столбцов идет в предложении SELECT.Список FROM следует за SELECT.

...