【问题标题】:Group by and counting not returning what I expect分组并计数不返回我所期望的
【发布时间】:2016-07-29 01:36:01
【问题描述】:

我有这张表,我需要知道一位艺术家在他/她的职业生涯中制作了多少张专辑,为了简洁起见,我将只发布一位艺术家。

"artist_ID" "song_ID" "album_ID" "touring"
"57"      "98"       "48"      "No"        
"57"      "99"       "48"      "No"        
"57"      "100"      "48"      "Sí"        
"57"      "101"      "48"      "No"        
"57"      "102"      "48"      "No"        
"57"      "103"      "48"      "No"        
"57"      "104"      "48"      "No"        
"57"      "105"      "48"      "No"        
"57"      "106"      "48"      "No"        
"57"      "279"      "163"     "No"        
"57"      "280"      "163"     "No"        
"57"      "281"      "163"     "No"        
"57"      "380"      "241"     "No"        
"57"      "381"      "241"     "No"        

然后通过这个来获取数据:

SELECT artist_ID,
    count(*) AS churned_albums
FROM relation
GROUP BY group_ID,
    album_ID;

我希望得到以下数据:

"artist_ID" "churned_albums"           
"57"      "3"                     

但是,唉,我明白了:

"artist_ID" "churned_albums"
"57"      "9"             
"57"      "3"             
"57"      "2"             

它计算每张专辑的每首歌曲,我不知道如何告诉 MySQL 忽略该死的歌曲而只计算专辑。我还尝试使用 count(artist_ID) 而不是 count(*) 和其他几种排列方式,但似乎没有任何效果。

这个问题与How to use count and group by at the same select statementUsing group by on multiple columns 密切相关,但它们没有帮助。 :(

感谢您的帮助! :)

【问题讨论】:

  • 您的数据中没有“group_id”列。
  • 为什么选择一件事却按另一件事分组??
  • @Tibrogargan 哇!忘了编辑那些。该表是另一种语言的,我忘了翻译这些字符串。 :P

标签: mysql sql group-by


【解决方案1】:

您可以使用count(distinct album_id) 计算每个group_id 的唯一专辑数

select group_id,
    count(distinct album_id) as churned_albums
from relation
group by group_id

【讨论】:

    【解决方案2】:

    我创建了一个 sqlfiddle 用于可视化您所需的查询。看看这里:http://sqlfiddle.com/#!9/d1372/2

    我使用的查询:

    select group_id, count(distinct album_id) AS churned_albums
    from relations
    group by group_id;
    

    【讨论】:

    • 我在 sqlfiddle 上做了同样的查询,但你更快:P
    • 谢谢 Fuzzy 和 arsho!还要感谢您让我了解 SQL Fiddle,它会在以后的问题中派上用场。 :)
    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 2021-12-11
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    相关资源
    最近更新 更多