MySQLで月別にユニークユーザ数を出すSQL

MySQL のデータの中から月別に○○の数を出す、という集計は良くあるのですが、いつも書き方を忘れてしまうので、例を挙げておきます。

例えば販売データが purchase というテーブルに入っていて、購入者の ID が user_id カラムに、購入日が created_at カラムに格納されているとすると、月別の購入者数は

SELECT DATE_FORMAT(created_at, ‘%Y-%m’) as reg_time,COUNT(DISTINCT user_id) FROM purchase GROUP BY reg_time ;

というSQLで集計できます。

これを使えば、アクセスしたマンスリーユニークユーザ数などを集計することができます。

日別への応用は簡単です、DATE_FORMAT の部分を以下のようにすれば日別になります。

SELECT DATE_FORMAT(created_at, ‘%Y-%m-%d’) as reg_time,COUNT(DISTINCT user_id) FROM purchase GROUP BY reg_time ;