Печать топ-5 клипов каждого года в зависимости от их рейтинга - PullRequest
0 голосов
/ 05 декабря 2018

Мне нужно печатать для каждого года: название фильма, год и место в рейтинге лучших 5 клипов в зависимости от их рейтинга.

Итак, мне нужно найти 5 лучших по рейтингуфильмы каждого года.Я пробовал год GROUP BY (releases.date), но мне также нужны заголовки и мне нужно получить N-е верхние строки каждой группы.

CLIPS [ id, title ]
RELEASES [ id_clip, date ]
RANKS [ id_clip, nr_votes, ranking ]

Есть какие-нибудь подсказки?Я использую MySQL.У меня также есть год в таблице клипов.

mysql> select * from clip LIMIT 5;
+--------+-----------------------+------+-----------+
| idclip | title                 | year | clip_type |
+--------+-----------------------+------+-----------+
|      4 | !Women Art Revolution | 2010 |         0 |
|      7 | #1                    | 2005 |         0 |
|      8 | #1 (I)                | 2010 |         2 |
|      9 | #1 (II)               | 2010 |         2 |
|     12 | #1 Cheerleader Camp   | 2010 |         2 |
+--------+-----------------------+------

mysql> select * from releasedates LIMIT 5;
+---------+---------------------+---------+
| id_clip | date                | country |
+---------+---------------------+---------+
|       4 | 2010-09-01 00:00:00 | Canada  |
| 1773811 | 2006-01-22 00:00:00 | USA     |
| 1773815 | 2006-02-12 00:00:00 | USA     |
| 1773818 | 2006-02-19 00:00:00 | USA     |
| 1773820 | 2006-01-22 00:00:00 | USA     |
+---------+---------------------+---------+
5 rows in set (0,00 sec)

mysql> select * from ratings LIMIT 5;
+---------+-------+---------+
| id_clip | votes | ranking |
+---------+-------+---------+
|       4 |     8 | 8.0     |
| 1773811 |    51 | 4.5     |
| 1773839 |   753 | 6.3     |
| 1773843 |    32 | 6.9     |
| 1773844 |    18 | 7.1     |
+---------+-------+---------+
5 rows in set (0,00 sec)

1 Ответ

0 голосов
/ 05 декабря 2018

Предполагая, что столбец id в Clips похож на столбец id_clip в выпусках, вы можете попробовать это, я не могу проверить это в данный момент, но я думаю, что это должно работать

select Title,Year(date) ,
RANK() OVER(PARTITION BY Year(Date) ORDER BY ranking)
from Clips c
Releases r on c.id=r.id_clip
join Ranks rank on r.id_clip=rank.id_clip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...