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

Come calcolare gli utenti attivi settimanali (WAU) in MySQL

Weekly Active Users (WAU) è un utile indicatore di prestazioni chiave (KPI) da monitorare per ogni attività online. Ti dà un'idea di quante persone usano il tuo prodotto/servizio almeno una volta alla settimana. Ecco come calcolare gli utenti attivi settimanali (WAU) in MySQL.

Come calcolare gli utenti attivi settimanali (WAU) in MySQL

Supponiamo che tu abbia i seguenti utenti della tabella (user_id, last_login). ultimo_accesso è il timestamp dell'ultimo accesso di un utente. Alcuni sistemi memorizzano anche questo timestamp come modificato_data, aggiornato_at, ecc.

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

Ecco la query SQL per calcolare gli utenti attivi settimanali (WAU) in MySQL per l'ultima settimana.

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

Bonus letto:come calcolare gli utenti attivi mensili (MAU) in MySQL

Se desideri aggiungere filtri (ad es. status=4) alla tua query, puoi aggiungerla alla clausola WHERE, come mostrato di seguito in grassetto .

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

Se desideri calcolare gli utenti attivi settimanali (WAU) per ogni settimana nei tuoi dati, utilizza la seguente query SQL. In questo caso, utilizziamo semplicemente la funzione SETTIMANA per aggregare gli utenti in base al loro last_login valori.

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

Puoi facilmente personalizzare la query precedente per calcolare gli utenti attivi settimanali (WAU) in MySQL e tracciarli su un grafico a linee.

Se vuoi calcolare quanti utenti tornano al tuo sito web ogni settimana, ecco come calcolare il tasso di fidelizzazione in SQL.

Se si desidera calcolare gli utenti attivi settimanali per ogni giorno, ovvero gli utenti attivi per i 6 giorni precedenti, per ogni giorno, è possibile utilizzare la query seguente. Qui calcoliamo anche DAU (Utenti attivi giornalieri) insieme a 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 |
+------------+-----+-----+

Nella query precedente, per ogni giorno, contiamo il numero di utenti distinti che hanno effettuato l'accesso in quel giorno e nei 6 giorni precedenti.

Ora hai visto diversi modi per calcolare gli utenti attivi settimanali (WAU) in MySQL. Puoi personalizzarli secondo le tue esigenze.

Puoi anche utilizzare uno strumento di creazione di grafici per tracciare gli utenti attivi settimanali nel grafico a barre e condividerlo con il tuo team. Ecco un esempio di grafico a barre che mostra WAU, creato utilizzando Ubiq

Se vuoi creare grafici, dashboard e report dal database MySQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.