如果有计数则选择总和

FS维埃拉

我有3表table artist与artist_id名称

带有album_idartist_idname的表专辑

带有song_idartist_idalbum_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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章