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