sql >> Base de Datos >  >> RDS >> Mysql

Cómo calcular los usuarios activos semanales (WAU) en MySQL

Los usuarios activos semanales (WAU) son un indicador clave de rendimiento (KPI) útil para realizar un seguimiento de cada negocio en línea. Te da una idea de cuántas personas usan tu producto/servicio al menos una vez a la semana. Aquí se explica cómo calcular los usuarios activos semanales (WAU) en MySQL.

Cómo calcular los usuarios activos semanales (WAU) en MySQL

Digamos que tiene la siguiente tabla de usuarios (user_id, last_login). último_inicio de sesión es la marca de tiempo de la última vez que un usuario inició sesión. Algunos sistemas también almacenan esta marca de tiempo como fecha_modificada, fecha_actualizada, 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 |
+---------+---------------------+

Aquí está la consulta SQL para calcular los usuarios activos semanales (WAU) en MySQL durante la última semana.

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

Lectura adicional:Cómo calcular los usuarios activos mensuales (MAU) en MySQL

Si desea agregar filtros (por ejemplo, estado =4) a su consulta, puede agregarlo a la cláusula WHERE, como se muestra a continuación en negrita .

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

Si desea calcular los usuarios activos semanales (WAU) para cada semana en sus datos, use la siguiente consulta SQL. En este caso, simplemente usamos la función WEEK para agregar usuarios en función de su last_login valores.

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

Puede personalizar fácilmente la consulta anterior para calcular los usuarios activos semanales (WAU) en MySQL y trazarlos en un gráfico de líneas.

Si desea calcular cuántos usuarios regresan a su sitio web cada semana, aquí le mostramos cómo calcular la tasa de retención en SQL.

Si desea calcular los usuarios activos semanales para cada día, es decir, los usuarios activos durante los 6 días anteriores, para cada día, puede utilizar la siguiente consulta. Aquí también calculamos DAU (Usuarios activos diarios) junto con 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 |
+------------+-----+-----+

En la consulta anterior, para cada día, contamos la cantidad de usuarios distintos que iniciaron sesión ese día y los 6 días anteriores.

Ahora ha visto diferentes formas de calcular los usuarios activos semanales (WAU) en MySQL. Puede personalizarlos según sus necesidades.

También puede usar una herramienta de gráficos para trazar usuarios activos semanalmente en un gráfico de barras y compartirlo con su equipo. Aquí hay un ejemplo de gráfico de barras que muestra WAU, creado usando Ubiq

Si desea crear gráficos, paneles e informes desde la base de datos MySQL, puede probar Ubiq. Ofrecemos una prueba gratuita de 14 días.