2016-04-07 50 views
0

我有这张表,我需要知道艺术家在他/她的职业生涯中搅动了多少张专辑,为了简洁起见,我只会发布一位艺术家。分组并计算不返回我期望的结果

"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忽略darn歌曲并只计算专辑。我也尝试count(artist_ID)而不是count(*)和其他几个排列,但似乎没有任何工作。

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

感谢您的帮助!:)

+1

有一个在你的数据没有“GROUP_ID”一栏。 – Tibrogargan

+0

为什么选择一件事,但由另一件事组? – Strawberry

+0

@Tibrogargan woops!忘了编辑这些。该表是另一种语言,我忘了翻译这些字符串。 :P – Deses

回答

2

算独特的专辑的#我为你想要查询的可视化创造了sqlfiddle 。看看这里:http://sqlfiddle.com/#!9/d1372/2

我已经使用的查询:

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

我在sqlfiddle上做了同样的查询,但是速度更快:P –

+0

谢谢模糊和arsho!也感谢您让我知道SQL小提琴,它会派上用场,为将来的问题。 :) – Deses

1

您可以使用count(distinct album_id)group_id

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