sql >> Databasteknik >  >> RDS >> Mysql

Hur man beräknar aktiva användare per vecka (WAU) i MySQL

Weekly Active Users (WAU) är en användbar nyckelprestandaindikator (KPI) att spåra för alla onlineföretag. Det ger dig en uppfattning om hur många som använder din produkt/tjänst minst en gång i veckan. Så här beräknar du veckoaktiva användare (WAU) i MySQL.

Hur man beräknar aktiva användare per vecka (WAU) i MySQL

Låt oss säga att du har följande tabellanvändare (user_id, last_login). senaste_inloggning är tidsstämpeln för senaste gången en användare loggade in. Vissa system lagrar även denna tidsstämpel som modified_date, updated_at, etc.

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 |
+---------+---------------------+

Här är SQL-frågan för att beräkna veckoaktiva användare (WAU) i MySQL under den senaste veckan.

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

Bonus läsning:Hur man beräknar månatliga aktiva användare (MAU) i MySQL

Om du vill lägga till filter (t.ex. status=4) i din fråga kan du lägga till den i WHERE-satsen, som visas nedan i fetstil .

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

Om du vill beräkna veckoaktiva användare (WAU) för varje vecka i dina data, använd följande SQL-fråga. I det här fallet använder vi helt enkelt WEEK-funktionen för att samla användare baserat på deras last_login värden.

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 |  ...|
+------+-----+

Du kan enkelt anpassa ovanstående fråga för att beräkna veckoaktiva användare (WAU) i MySQL och plotta dem på ett linjediagram.

Om du vill beräkna hur många användare som återvänder till din webbplats varje vecka, så här beräknar du retentionsgraden i SQL.

Om du vill beräkna veckoaktiva användare för varje dag, det vill säga aktiva användare för föregående 6 dagar, för varje dag, kan du använda följande fråga. Här beräknar vi även DAU (Daily active users) tillsammans med WAU.

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 |
+------------+-----+-----+

I ovanstående fråga, för varje dag, räknar vi antalet distinkta användare som loggat in den dagen och föregående 6 dagar.

Nu har du sett olika sätt att beräkna veckoaktiva användare (WAU) i MySQL. Du kan anpassa dem enligt dina önskemål.

Du kan också använda ett diagramverktyg för att plotta aktiva användare varje vecka i stapeldiagram och dela det med ditt team. Här är ett exempel på stapeldiagram som visar WAU, skapat med Ubiq

Om du vill skapa diagram, instrumentpaneler och rapporter från MySQL-databasen kan du prova Ubiq. Vi erbjuder en 14-dagars gratis provperiod.

  1. MySQL PHP-inkompatibilitet

  2. Hur man listar alla standardbegränsningar med kolumner i SQL Server-databasen - SQL Server / TSQL självstudie del 92

  3. Hur man skapar unika begränsningar för flera kolumner i SQL Server - SQL Server / TSQL självstudie del 96

  4. 3 sätt att ersätta NULL med "N/A" i SQLite