我有3张 table 表格艺术家,包含 artist_id、name;
带有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;
关于mysql - 如果 且有计数,则选择总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58891178/