こんにちは。
東京はこれから雪が。。 帰りに足元すべらせないように!!

"☆..:*・゜☆..:*・゜☆..:*・゜☆..:*・゜☆:*・☆

さて今日はSQL TIPSです。

「件数別レコード数」の集計SQLをご紹介!グッド!

例えば、お客さんの来店履歴のテーブル(raiten)

user_id | date |
========================
1 | 2010/01/01 |
2 | 2010/01/01 |
3 | 2010/01/01 |
1 | 2010/01/02 |
1 | 2010/01/04 |

のデータから

1回 2名
3回 3名
のような「来店数別人数」
を集計したいときには、

select cnt, count(*) from (select user_id, count(*) cnt from raiten group by user_id) aaa group by cnt;

とやれば集計できてしまいますー すばらしいー

さて、ここでポイントなのが
「aaa」 ってなに? ってはなしですが、
では、aaaをとって、

select cnt, count(*) from (select user_id, count(*) cnt from raiten group by user_id) group by cnt;

と実行すると
ERROR 1248 (42000): Every derived table must have its own alias
と残念なことにエラーとなってしまいます。。
で、そのエラーは何?
derived table ってのは fromの後の()で囲まれたSQLのことで
それにalias(つまりお名前)を付けなされというMYSQLからのお達しなのでした。

なので、aaaという名前(alilas)をつけたのです。もちろん名前はaaaである必要はないです。他の文字列でもOKっす。

よろしけれあば、ぜひおためしあれー。

PVをDB保存しとけばのユーザ別アクセス数(UU)などを集計することもこのやりかたいけるっす!
※ テーブルのデータ量が膨大な時、DBに負荷がかかる可能性があるので、ご注意を。