如何为每位艺术家获得评分最高的专辑?

时间:2015-11-03 23:41:11

标签: mysql sql

Album
Title                                     Artist                Year Type        Rating
My World                                  Justin Bieber         2009 STUDIO           4
My Worlds: The Collection                 Justin Bieber         2010 COMPILATION      4
21                                        Adele                 2011 STUDIO           5
Adele Live at the Royal Albert Hall       Adele                 2011 LIVE             4
Get to Heaven                             Everything Everything 2015 STUDIO           5
One of the boys                           Katy Perry            2008 STUDIO           3
Overexposed                               Maroon 5              2012 STUDIO           5
Live From Le Cabaret: In Montreal. Quebec Maroon 5              2008 LIVE             4
Pure Heroine                              Lorde                 2013 STUDIO           4

以上是专辑,我如何才能获得每个艺术家自己的最高评级专辑?

提前致谢。

2 个答案:

答案 0 :(得分:2)

以下是使用max聚合加入子查询的一个选项:

select a.title, a.artist
from album a join (
    select artist, max(rating) maxrating
    from almum
    group by artist) t on a.artist = t.artist and a.rating = t.maxrating

如果每位艺术家共享最高评分,则可以返回多个标题。

使用outer join

可能更容易
select a.*
from album a                   
  left join album a2            
      on a.artist = a2.artist and a.rating < a2.rating
where a2.rating is null  

答案 1 :(得分:-1)

SELECT* 
FROM(SELECT* FROM`Album` ORDER BY `Artist`, `Rating` DESC) x
GROUP BY `Artist`

有关详细信息,请参阅this question,它非常相似。基本上,对它进行排序,以便您按照艺术家的方式重新排列表格,每个表格的最高评级,然后将其分组以拉出每个表格的第一条记录。