按最大值过滤分组 table 的最佳方法是什么?

What would be the best way to filter grouped table by its max values?

我有以下内容 table,它告诉我某部电影在某月有多少租借。这是前 10 行:

| month | title             | rentals |
+-------+-------------------+---------+
|     2 | ACE GOLDFINGER    |       1 |
|     2 | AFFAIR PREJUDICE  |       1 |
|     2 | AFRICAN EGG       |       1 |
|     2 | ALI FOREVER       |       1 |
|     2 | ALONE TRIP        |       1 |
|     2 | AMADEUS HOLY      |       1 |
|     2 | AMERICAN CIRCUS   |       1 |
|     2 | AMISTAD MIDSUMMER |       1 |
|     2 | ARMAGEDDON LOST   |       1 |
|     2 | BAKED CLEOPATRA   |       1 |
+-------+-------------------+---------+

我在这里的主要 objective 是创建一个新的 table,其中每个月都会为我提供该月租借次数最多的电影的标题

到目前为止,我尝试过组合使用 group by 查询,但收效甚微。尽管如此,我还是成功地创建了一个新的 table,它为我提供了顶级电影(或电影)在每个月的租借数量。这是:

CREATE VIEW temp AS (SELECT month, MAX(rentals) rentals FROM film_per_month GROUP BY 1);

mysql> SELECT * FROM temp;
+-------+---------+
| month | rentals |
+-------+---------+
|     2 |       2 |
|     5 |       5 |
|     6 |       7 |
|     7 |      16 |
|     8 |      13 |
+-------+---------+
5 rows in set (0.05 sec)

这里的障碍是我无法提取它来显示租借次数最多的电影的标题。

我试过使用内部连接修改它,self-joins,但我把它搞砸了。

所以我的问题是:创建一个新的 table 的更好方法是什么,每个月,它都会为我提供其中租借次数最多的电影的标题 ?

我认为您可以尝试使用 EXISTS 子查询来获取每个月行的 Max 租金。

SELECT t1.*
FROM film_per_month t1
WHERE EXISTS (
   SELECT 1
    FROM film_per_month  tt
    WHERE tt.month = t1.month
    GROUP BY tt.month
    HAVING MAX(tt.rentals)  = t1.rentals
)