0

查找由来自 CA(加拿大)的艺术家发行且评级高于同年发行的所有专辑(任何类型、任何艺术家)的平均评级的所有现场专辑。对于满足要求的每张专辑,输出其标题、艺术家姓名和年份(按此顺序)。

4

1 回答 1

1

使用窗口函数来做到这一点:

select t.album, t.name artist, t.year 
  from (
    select b.name album, a.name, b.year, b.ratings, avg(b.ratings) over (partition by b.year) year_rat
      from albums b, artists a, countries c
     where a.country=c.code
       and c.code='CA1'
       and a.name=b.artist
 ) t
 where t.ratings >= t.year_rat

或者,如果不使用窗口函数:

select albums.title, artists.name, albums.year
  from artists 
  join albums on albums.artist= artists.name
  join (select year, avg(ratings) avg_ratings from albums group by year) As temp 
    on temp.year=albums.year
 where artists.country='CA1'
   and albums.ratings >= temp.avg_ratings
于 2018-11-19T03:05:32.520 回答