Mysql 如果有计数,则选择总和
我有三张桌子 表艺术家,艺术家id,姓名 带有唱片集id、艺术家id、名称的表格唱片集 有歌曲id、艺术家id、专辑id的表格歌曲,还有其他一些东西,但我认为它们对于这个问题不是必需的 我想选择一个表,其中包含艺术家的姓名、包含等于或多于10首歌曲的专辑数量、包含少于10首歌曲的专辑数量 要计算每个专辑中的歌曲数,请执行以下操作:Mysql 如果有计数,则选择总和,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我有三张桌子 表艺术家,艺术家id,姓名 带有唱片集id、艺术家id、名称的表格唱片集 有歌曲id、艺术家id、专辑id的表格歌曲,还有其他一些东西,但我认为它们对于这个问题不是必需的 我想选择一个表,其中包含艺术家的姓名、包含等于或多于10首歌曲的专辑数量、包含少于10首歌曲的专辑数量 要计算每个专辑中的歌曲数,请执行以下操作: select album.name, count(DISTINCT songs.song_id) from album inner join faixas on al
select album.name, count(DISTINCT songs.song_id)
from album inner join faixas on album.album_id = songs.album
group by album.name
现在我意识到,如果在某个地方像这样,我将不得不进行求和,并进行多个选择,只是不知道如何将两者连接起来
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;
除了n al.album\u id=a.album\u id加入,必须与艺术家的id和小细节一起改变,它起作用了。非常感谢!