Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como calcular usuários ativos semanais (WAU) no MySQL


Weekly Active Users (WAU) é um indicador chave de desempenho (KPI) útil para acompanhar todos os negócios online. Dá uma ideia de quantas pessoas usam seu produto/serviço pelo menos uma vez por semana. Veja como calcular os usuários ativos semanais (WAU) no MySQL.


Como calcular usuários ativos semanais (WAU) no MySQL


Digamos que você tenha a seguinte tabela users(user_id, last_login). last_login é o carimbo de data/hora da última vez que um usuário fez login. Alguns sistemas também armazenam esse carimbo de data/hora como data_modificada, data_atualizada 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 |
+---------+---------------------+

Aqui está a consulta SQL para calcular Weekly Active Users (WAU) no MySQL, para a última semana.
mysql> SELECT COUNT(DISTINCT user_id)
         FROM users
         WHERE last_login > NOW() - INTERVAL 1 WEEK;
+-------------------------+
| COUNT(DISTINCT user_id) |
+-------------------------+
|                      16 |
+-------------------------+


Bônus de leitura:Como calcular usuários ativos mensais (MAU) no MySQL

Se você deseja adicionar filtros (por exemplo, status=4) à sua consulta, pode adicioná-lo à cláusula WHERE, conforme mostrado abaixo em negrito .
SELECT COUNT(DISTINCT id) as DAU
    FROM users
    WHERE date_joined > NOW() - INTERVAL 1 DAY and status=4;

Se você quiser calcular os usuários ativos semanais (WAU) para cada semana em seus dados, use a seguinte consulta SQL. Nesse caso, simplesmente usamos a função WEEK para agregar usuários com base em seu 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 |  ...|
+------+-----+

Você pode personalizar facilmente a consulta acima para calcular Usuários Ativos Semanais (WAU) no MySQL e plotá-los em um gráfico de linhas.



Se você deseja calcular quantos usuários retornam ao seu site todas as semanas, veja como calcular a taxa de retenção no SQL.



Se você quiser calcular os usuários ativos semanais para cada dia, ou seja, os usuários ativos dos 6 dias anteriores, para cada dia, poderá usar a consulta a seguir. Aqui também calculamos o DAU (Usuários ativos diários) junto com o 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 |
+------------+-----+-----+


Na consulta acima, para cada dia, contamos o número de usuários distintos que efetuaram login naquele dia e nos 6 dias anteriores.

Agora você viu diferentes maneiras de calcular usuários ativos semanais (WAU) no MySQL. Você pode personalizá-los conforme sua necessidade.

Você também pode usar uma ferramenta de gráficos para plotar usuários ativos semanais no gráfico de barras e compartilhá-lo com sua equipe. Aqui está um exemplo de gráfico de barras que mostra WAU, criado usando Ubiq





Se você deseja criar gráficos, painéis e relatórios do banco de dados MySQL, experimente o Ubiq. Oferecemos um teste gratuito de 14 dias.