みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLにてCOUNTした値を更にCOUNT

MySQLにてCOUNTした値を、更にCOUNTする事を1回のSQLにて実行する事は可能でしょうか?
※2回のSQL、プログラミングを介する、EXCELで再集計する等でならCOUNTのCOUNTは求められるのですが…1回のSQLでの回答お願いします。

ユーザーIDと課金額のカラムからなる、以下のようなテーブルがあるとします。

buyテーブル
user_id,coin
1,100
5,100
10,200
5,200
5,200
17,100
1,100
2,200
23,500

ユーザー毎の課金回数は下記にて求められますが、
SELECT user_id,COUNT(coin) FROM buy GROUP BY id

user_id,count(coin)
1,2
2,1
5,3
10,1
17,1
23,1

count(coin)毎の人数というのはどのように求めればいいでしょうか?
いわば下記のような集計結果が理想です。
※このような結果を1回のSQLにて出力するSQLをズバリ今回の例に沿って知りたいです。

count(coin),count(count(coin))
1,4
2,1
3,1

■環境
Apache2
MySQL5
PHP5

ご教授よろしくお願いします。

投稿日時 - 2012-09-12 15:45:58

QNo.7693941

すぐに回答ほしいです

質問者が選んだベストアンサー

こんなかんじでしょうか

SELECT ccoin, count(ccoin) FROM ( SELECT user_id, COUNT(coin) as ccoin FROM buy GROUP BY user_id ) as a GROUP BY ccoin;

投稿日時 - 2012-09-12 17:13:21

お礼

ご回答ありがとうございました。

実際のテーブルは、
カラム数12
レコード数約100万
ですが、
問題ありませんでした。

投稿日時 - 2012-09-13 12:18:00

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

SELECT count_coin, COUNT(*)
FROM (SELECT user_id,COUNT(coin) count_coin FROM buy GROUP BY user_id) t
GROUP BY count_coin;

でどうでしょうか?
もしかして、これは2回のSQLということになってしまうのでしょうか・・・

投稿日時 - 2012-09-12 17:22:38

お礼

ご回答ありがとうございました。

実際のテーブルは、
カラム数12
レコード数約100万
ですが、
問題ありませんでした。

こちらにもポイントをあげたいのですが、あげれないようです…
(昔は次点とかあったように思うのですが)

投稿日時 - 2012-09-13 12:20:14

あなたにオススメの質問