sql >> Database teknologi >  >> RDS >> Mysql

Sådan beregnes ugentlige aktive brugere (WAU) i MySQL

Weekly Active Users (WAU) er en nyttig nøglepræstationsindikator (KPI) til at spore for enhver onlinevirksomhed. Det giver dig en idé om, hvor mange der bruger dit produkt/tjeneste mindst én gang om ugen. Sådan beregner du ugentlige aktive brugere (WAU) i MySQL.

Sådan beregnes ugentlige aktive brugere (WAU) i MySQL

Lad os sige, at du har følgende tabelbrugere (bruger_id, sidste_login). sidste_login er tidsstemplet for sidste gang, en bruger loggede ind. Nogle systemer gemmer også dette tidsstempel som modified_date, updated_at osv.

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

Her er SQL-forespørgslen til at beregne ugentlige aktive brugere (WAU) i MySQL for den sidste uge.

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

Bonus læst:Sådan beregner du månedlige aktive brugere (MAU) i MySQL

Hvis du vil tilføje filtre (f.eks. status=4) til din forespørgsel, kan du tilføje den til WHERE-sætningen, som vist nedenfor med fed skrift .

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

Hvis du ønsker at beregne Weekly Active Users (WAU) for hver uge i dine data, skal du bruge følgende SQL-forespørgsel. I dette tilfælde bruger vi blot WEEK-funktionen til at samle brugere baseret på deres last_login værdier.

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 nemt tilpasse ovenstående forespørgsel til at beregne ugentlige aktive brugere (WAU) i MySQL og plotte dem på et linjediagram.

Hvis du vil beregne, hvor mange brugere der vender tilbage til dit websted hver uge, så kan du her se, hvordan du beregner fastholdelsesraten i SQL.

Hvis du vil beregne ugentlige aktive brugere for hver dag, det vil sige aktive brugere for de foregående 6 dage, for hver dag, så kan du bruge følgende forespørgsel. Her beregner vi også DAU (Daglige aktive brugere) sammen 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 ovenstående forespørgsel tæller vi for hver dag antallet af forskellige brugere, der loggede ind den dag og de foregående 6 dage.

Nu har du set forskellige måder at beregne ugentlige aktive brugere (WAU) i MySQL. Du kan tilpasse dem efter dit behov.

Du kan også bruge et diagramværktøj til at plotte ugentlige aktive brugere i søjlediagram og dele det med dit team. Her er et eksempel på søjlediagram, der viser WAU, oprettet ved hjælp af Ubiq

Hvis du vil oprette diagrammer, dashboards og rapporter fra MySQL-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.

  1. Oracle Dynamic Pivoting

  2. MAX() vs GREATEST() i MySQL:Hvad er forskellen?

  3. Enkelte citater, dobbelte citater og backticks i MySQL

  4. Hvordan udtrækkes to på hinanden følgende cifre fra et tekstfelt i MySQL?