MySQLメモーDAU、課金UU、課金率の集計ー

スポンサーリンク

MySQLを使ってDAU、課金UU、課金率を表示する方法のメモ。

 

使用するテーブル

サンプル用の仮テーブルとして、以下のようなものを想定します。

access_log

f:id:ngyope:20160908231832j:plain

  • d:アクセスした日時
  • access_time:アクセスした時間
  • uid:アクセスしたユーザーのID

 

spend_money_log

f:id:ngyope:20160908231834j:plain

  • 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

 

集計結果

f:id:ngyope:20160908233542j:plain