ホーム > MySQL

MySQL アーカイブ

ログイン率を求めてみる

  • 2007 年 5 月 28 日 10:54
  • MySQL

ログイン時のコールバック関数に「最終ログイン時刻(lastlogintime)が前日であった場合に logincount カラムに1を足す」処理を追加。
登録日から現在の日付を差し引き、経過日数を求め「logincount ÷ 経過日数」がログイン率となる。

UPDATE `アカウントテーブル` SET `logincount` = `logincount` + 1 WHERE
 ((DATE_FORMAT(NOW(), '%d') - DATE_FORMAT(FROM_UNIXTIME(`lastlogintime`) , '%d')) +
  (DATE_FORMAT(NOW(), '%m') - DATE_FORMAT(FROM_UNIXTIME(`lastlogintime`) , '%m')) +
  (DATE_FORMAT(NOW(), '%y') - DATE_FORMAT(FROM_UNIXTIME(`lastlogintime`) , '%y'))) > 0 AND `username` = 'ユーザ名';

で、logincount カラムに1を足す。
FROM_UNIXTIME(`lastlogintime`) としているのは、datetime じゃなくて int 型だから。

SELECT (`logincount` / DATEDIFF(NOW(),`登録日カラム`)) AS `average` FROM `アカウントテーブル` WHERE `username` = 'ユーザ名';

これで結果セットの average カラムに日毎のログイン率が割り出せる。
PHP のつもりが MySQL だけでなんとかなった例。

ホーム > MySQL

カテゴリー

ページの上部に戻る