sql - 如何使用group by编写sql查询

标签 sql database

我有这张表:

actors(id: int, first_name: string, last_name: string, gender: string)
directors(id: int, first_name: string, last_name: string)
directors genres(director id: int, genre: string, prob: 
float)
movies(id: int, name: string, years: int, rank: 
float,)
movies directors(director id: int, movie id: int)
movies genres(movie id: int, genre: string)
roles(actor id: int, movie id: int, role: string)

我想找出每种类型的电影制作数量最多的年份。

我正在执行以下操作,但卡住了,请帮忙!

select m.YEAR, count(m.year) as c, genre 
from movies_genres, 
     movies m 
where m.id = movies_genres.movie_id 
group by genre, m.year;

最佳答案

您可以获得每年每种类型的电影数量,这很棒。现在,您只需通过将查询作为派生表来选择其中的最大值。

select genre, year, max(c) mc
from
    (select m.YEAR, count(m.year) as c, genre 
    from movies_genres mg
         inner join movies m
             on m.id = mg.movie_id 
    group by genre, m.year)
group by genre, year

关于sql - 如何使用group by编写sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309056/

相关文章:

sql - 按很多列排序会严重影响性能吗?

mysql - SQL 将值拆分为多行

database - 为什么需要用户 id 属性?

database - 如何使用 Python 通过 SSH 连接到 Sqlite3 数据库?

sql - 无数据的物化 View 仍在加载数据

database - 调试时如何在 TOAD 中查看 CLOB 变量的完整值

java - Cassandra 每个分区键的大小限制

mysql - 使用具有多个结果的子查询,这些结果取决于主查询

sql - 如何在Spark中有条件地联接两个DataFrame并替换一列

sql - 主键选择的性能