MySQLを使ってDAU、課金UU、課金率を表示する方法のメモ。
使用するテーブル
サンプル用の仮テーブルとして、以下のようなものを想定します。
access_log
- d:アクセスした日時
- access_time:アクセスした時間
- uid:アクセスしたユーザーのID
spend_money_log
- d:課金した日時
- t:課金した時間
- uid:課金したユーザーのID
- amount:課金額
DAU、課金UU、課金率の集計
MySQLのクエリ
SELECT
accesst.d AS date,
COUNT(DISTINCT accesst.uid) AS dau,
COUNT(DISTINCT moneyt.uid) AS puu,
ROUND(COUNT(DISTINCT moneyt.uid)
/ COUNT(DISTINCT accesst.uid), 2) AS p_rate
FROM
access_log accesst
LEFT OUTER JOIN
spend_money_log moneyt
ON
accesst.d = moneyt.d
GROUP BY
date
ORDER BY
date
;
- まず、access_log と spend_money_log を d(日時)で join
- DAU:access_log から、日別に DISTINCT で uid を集計
- 課金UU:spend_money_log から、日別に DISTINCT で uid を集計
- 課金率:課金UU ÷ DAU