sql >> データベース >  >> RDS >> Mysql

MySQLで週次アクティブユーザー(WAU)を計算する方法

    ウィークリーアクティブユーザー(WAU)は、すべてのオンラインビジネスを追跡するための便利な主要業績評価指標(KPI)です。それはあなたに何人の人々が少なくとも週に一度あなたの製品/サービスを使うかについてあなたに考えを与えます。 MySQLでウィークリーアクティブユーザー(WAU)を計算する方法は次のとおりです。

    MySQLで週次アクティブユーザー(WAU)を計算する方法

    次のテーブルusers(user_id、last_login)があるとします。 last_login は、ユーザーが最後にログインしたときのタイムスタンプです。一部のシステムでは、このタイムスタンプをmodified_date、updated_atなどとして保存します。

    mysql> create table users(user_id int, last_login datetime);
    
    mysql> insert into users(user_id, last_login) values(1,'2020-03-01 10:00:00'),
         (2,'2020-03-02 09:00:00'),(3,'2020-03-03 14:00:00'),(4,'2020-03-04 11:00:00'),
         (5,'2020-03-05 12:00:00'),(6,'2020-03-06 20:00:00'),(7,'2020-03-07 21:00:00'),
         (8,'2020-03-08 12:00:00'),(9,'2020-03-09 20:00:00'),(10,'2020-03-10 21:00:00'),
         (11,'2020-03-11 12:00:00'),(12,'2020-03-12 20:00:00'),(13,'2020-03-13 21:00:00'),
         (14,'2020-03-13 12:00:00'),(15,'2020-03-15 20:00:00'),(16,'2020-03-16 21:00:00');
    
    mysql> select * from users;
    +---------+---------------------+
    | user_id | last_login          |
    +---------+---------------------+
    |       1 | 2020-03-01 10:00:00 |
    |       2 | 2020-03-02 09:00:00 |
    |       3 | 2020-03-03 14:00:00 |
    |       4 | 2020-03-04 11:00:00 |
    |       5 | 2020-03-05 12:00:00 |
    |       6 | 2020-03-06 20:00:00 |
    |       7 | 2020-03-07 21:00:00 |
    |       8 | 2020-03-08 12:00:00 |
    |       9 | 2020-03-09 20:00:00 |
    |      10 | 2020-03-10 21:00:00 |
    |      11 | 2020-03-11 12:00:00 |
    |      12 | 2020-03-12 20:00:00 |
    |      13 | 2020-03-13 21:00:00 |
    |      14 | 2020-03-13 12:00:00 |
    |      15 | 2020-03-15 20:00:00 |
    |      16 | 2020-03-16 21:00:00 |
    +---------+---------------------+
    

    これが、過去1週間のMySQLのWeekly Active Users(WAU)を計算するためのSQLクエリです。

    mysql> SELECT COUNT(DISTINCT user_id)
             FROM users
             WHERE last_login > NOW() - INTERVAL 1 WEEK;
    +-------------------------+
    | COUNT(DISTINCT user_id) |
    +-------------------------+
    |                      16 |
    +-------------------------+
    
    

    ボーナスリード:MySQLで月間アクティブユーザー(MAU)を計算する方法

    フィルタ(ステータス=4など)をクエリに追加する場合は、以下の太字に示すように、WHERE句に追加できます。 。

    SELECT COUNT(DISTINCT id) as DAU
        FROM users
        WHERE date_joined > NOW() - INTERVAL 1 DAY and status=4;
    

    データ内の毎週の週次アクティブユーザー(WAU)を計算する場合は、次のSQLクエリを使用します。この場合、WEEK関数を使用して、ユーザーの last_loginに基づいてユーザーを集計します。 値。

    mysql> SELECT WEEK(last_login) AS WEEK,
                COUNT(user_id) AS WAU
             FROM users
             GROUP BY WEEK(last_login);
    +------+-----+
    | WEEK | WAU |
    +------+-----+
    |    9 |   7 |
    |   10 |   7 |
    |   11 |   2 |
    |   12 |  ...|
    +------+-----+
    

    上記のクエリを簡単にカスタマイズして、MySQLでWeekly Active Users(WAU)を計算し、折れ線グラフにプロットすることができます。

    毎週ウェブサイトにアクセスするユーザーの数を計算する場合は、SQLで保持率を計算する方法を次に示します。

    毎日の週ごとのアクティブユーザー、つまり過去6日間のアクティブユーザーを毎日計算する場合は、次のクエリを使用できます。ここでは、WAUと一緒にDAU(毎日のアクティブユーザー)も計算します。

    mysql> SELECT d.day
              , COUNT(DISTINCT u.user_id) AS wau
              , COUNT(DISTINCT IF(u.day=d.day,u.user_id,NULL)) AS dau
           FROM ( SELECT DATE(k.last_login) AS `day`
                    FROM users k
                   GROUP BY `day`
                ) d
           JOIN ( SELECT DATE(l.last_login) AS `day`
                       , l.user_id
                    FROM users l
                   GROUP BY `day`, l.user_id
                ) u
             ON u.day <= d.day AND u.day > DATE_ADD(d.day, INTERVAL -7 DAY)
          GROUP BY d.day
          ORDER BY d.day;
    +------------+-----+-----+
    | day        | wau | dau |
    +------------+-----+-----+
    | 2020-03-01 |   1 |   1 |
    | 2020-03-02 |   2 |   1 |
    | 2020-03-03 |   3 |   1 |
    | 2020-03-04 |   4 |   1 |
    | 2020-03-05 |   5 |   1 |
    | 2020-03-06 |   6 |   1 |
    | 2020-03-07 |   7 |   1 |
    | 2020-03-08 |   7 |   1 |
    | 2020-03-09 |   7 |   1 |
    | 2020-03-10 |   7 |   1 |
    | 2020-03-11 |   7 |   1 |
    | 2020-03-12 |   7 |   1 |
    | 2020-03-13 |   8 |   2 |
    | 2020-03-15 |   7 |   1 |
    | 2020-03-16 |   7 |   1 |
    +------------+-----+-----+
    
    

    上記のクエリでは、1日ごとに、その日と過去6日間にログインした個別のユーザーの数をカウントします。

    これで、MySQLで週次アクティブユーザー(WAU)を計算するさまざまな方法を見てきました。要件に応じてカスタマイズできます。

    グラフ作成ツールを使用して、毎週アクティブなユーザーを棒グラフでプロットし、チームと共有することもできます。これは、Ubiqを使用して作成されたWAUを示す棒グラフの例です

    MySQLデータベースからチャート、ダッシュボード、レポートを作成したい場合は、Ubiqを試すことができます。 14日間の無料トライアルを提供しています。

    1. 統計がロックされているテーブルを見つける方法

    2. SQL Server:初心者向けの便利なヒント

    3. Oracle / SQL:クエリSELECT*FROMレコードWHERErownum>=5 AND rownum<=10-ゼロ行を返すのはなぜですか

    4. 1つのSQLクエリで複数のカウントを取得するにはどうすればよいですか?