SQL学校作业,写一个SELECT其中returns

SQL School Homework, write a SELECT which returns

写一张SELECT,其中returns每个乐队第五张专辑的名字。如果乐队没有第五张专辑,上面应该什么都没有。如果乐队在一年内有更多专辑,则按专辑名称的字典顺序排列。结果应包括乐队名称和专辑名称,按照乐队名称升序(从 A 到 Z)的字典顺序排列。

我的解决方案不正确,因为我不能用NULL值填充第五张专辑。

SELECT brand_name, album_name
FROM (
    SELECT b.name AS brand_name, a.name AS album_name,
        ROW_NUMBER() OVER(PARTITION BY b.name ORDER BY a.release_year) AS rank
    FROM bands AS b
    JOIN albums AS a ON a.band_id = b.id
  ) tmp
WHERE rank = 5

我的结果: 正确结果:

您应该在子查询中对相册进行排名,然后在外部查询中 left join

SELECT b.name brand_name, a.name album_name
FROM bands b
LEFT JOIN (
    SELECT 
        band_id, 
        name,
        ROW_NUMBER() OVER(PARTITION BY band_id ORDER BY release_year) AS rn
    FROM albums
) a ON a.band_id = b.id AND a.rn = 5