2016-04-07 12 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"  "9"    
"57"  "3"    
"57"  "2"    

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

しかし、悲しいかなを、私はこれを取得

アルバムごとにすべての曲が数えられますMySQLにダン・ソングを無視してアルバムを数える方法を知っている。私もcount(*)といくつかの他の順列の代わりにcount(artist_ID)を試しましたが、何も動作していないようです。

この質問は、How to use count and group by at the same select statementUsing group by on multiple columnsと密接に関連していますが、助けにはなりませんでした。助けのため:(

感謝!:)

+1

あなたのデータには「group_idの」列はありません。 – Tibrogargan

+0

1つのものを選択して別のものでグループ化するのはなぜですか? – Strawberry

+0

@Tibrogargan woops!それらを編集するのを忘れました。テーブルは別の言語で書かれていて、私はそれらの文字列を翻訳するのを忘れていました。 :P – Deses

答えて

2

ごとにユニークなアルバムの#をカウントするcount(distinct album_id)を使用することができます。ここを見て:私が使用している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 Fiddleについて知ってくれてありがとう、それは将来の質問のために便利になるだろう。 :) – Deses

1

あなたは私があなたの目的のクエリの可視化のためsqlfiddleを作成しているgroup_id

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