mysql - 如果 且有计数,则选择总和

标签 mysql sql phpmyadmin

我有3张 table 表格艺术家,包含 artist_idname

带有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;

关于mysql - 如果 且有计数,则选择总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58891178/

相关文章:

mysql - 用于排序排行榜的 SQL 查询

mysql - 执行UNION select获取数据来自哪个表

sql - 其中文件名如 '%_123456_%'

mysql - SQL查询不适用于日期之间

php - 使用 PDO 准备语句并增加列值

mysql - 在该脚本中创建数据库后如何传递 sqlite 查询..?

php - 如何每天自动运行php脚本?

mysql - 使用 SQL LIMIT 和 OFFSET 查询选择所有记录

linux - 如何在 Mint 上安装 phpmyadmin

mysql - 在 MYSQL CONSOLE 中触发