我有3表table artist与artist_id,名称;
带有album_id,artist_id,name的表专辑;
带有song_id,artist_id,album_id的表歌曲(还有其他几样,但我认为它们对于解决此问题不是必需的);
我想选择一个表,其中包含歌手姓名,歌曲数量等于或大于10的专辑数量,歌曲数量小于或等于10的专辑。
要计算每个专辑中的歌曲数量,请执行以下步骤:
select album.name, count(DISTINCT songs.song_id)
from album inner join faixas on album.album_id = songs.album
group by album.name
现在我知道,如果像这样在某个地方,我必须得求和,并进行1个以上的选择,只是不知道如何连接两者
sum(if(count (song_id)>=10,1,0)) and sum(if(count (song_id)<10,1,0))
我认为您需要两个级别的聚合,而外部级别则需要条件聚合:
select a.artist_id, a.name,
sum(num_songs >= 10) as cnt_10_plus,
sum(num_songs < 10) as cnt_9_minus,
from artists a join
album al
on al.artist_id = a.artist_id join
(select s.album_id, count(*) as num_songs
from songs s
group by s.album_id
) s
on al.album_id = s.album_id
group by a.artist_id, a.name;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句