sql >> Database >  >> RDS >> Mysql

Wekelijks actieve gebruikers (WAU) berekenen in MySQL

Wekelijkse actieve gebruikers (WAU) is een handige key performance indicator (KPI) om bij te houden voor elk online bedrijf. Het geeft u een idee hoeveel mensen uw product/dienst minimaal één keer per week gebruiken. Hier leest u hoe u wekelijks actieve gebruikers (WAU) in MySQL kunt berekenen.

Wekelijks actieve gebruikers (WAU) berekenen in MySQL

Stel dat u de volgende tabelgebruikers heeft (user_id, last_login). laatste_login is de tijdstempel van de laatste keer dat een gebruiker inlogde. Sommige systemen slaan deze tijdstempel ook op als 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 |
+---------+---------------------+

Hier is de SQL-query om de wekelijkse actieve gebruikers (WAU) in MySQL te berekenen voor de afgelopen 1 week.

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

Lees bonus:Bereken maandelijks actieve gebruikers (MAU) in MySQL

Als u filters (bijv. status=4) aan uw zoekopdracht wilt toevoegen, kunt u deze toevoegen aan de WHERE-component, zoals hieronder weergegeven in vet .

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

Als u Weekly Active Users (WAU) voor elke week in uw gegevens wilt berekenen, gebruikt u de volgende SQL-query. In dit geval gebruiken we gewoon de WEEK-functie om gebruikers te verzamelen op basis van hun laatste_login waarden.

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

U kunt de bovenstaande query eenvoudig aanpassen om Weekly Active Users (WAU) in MySQL te berekenen en ze in een lijndiagram te plotten.

Als u wilt berekenen hoeveel gebruikers elke week terugkeren naar uw website, kunt u als volgt de retentie in SQL berekenen.

Als u Wekelijkse actieve gebruikers voor elke dag wilt berekenen, dat wil zeggen actieve gebruikers voor de voorgaande 6 dagen, voor elke dag, dan kunt u de volgende query gebruiken. Hier berekenen we naast WAU ook DAU (Dagelijkse actieve gebruikers).

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

In de bovenstaande zoekopdracht tellen we voor elke dag het aantal verschillende gebruikers die op die dag en de voorafgaande 6 dagen hebben ingelogd.

Nu heb je verschillende manieren gezien om wekelijkse actieve gebruikers (WAU) in MySQL te berekenen. U kunt ze naar wens aanpassen.

U kunt ook een grafiektool gebruiken om wekelijks actieve gebruikers in een staafdiagram te plotten en deze met uw team te delen. Hier is een voorbeeld van een staafdiagram met WAU, gemaakt met Ubiq

Als u grafieken, dashboards en rapporten wilt maken vanuit de MySQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen.

  1. Maak de prestaties van SQL Server eenvoudig

  2. Fout:pg_config uitvoerbaar bestand niet gevonden bij het installeren van psycopg2 op Alpine in Docker

  3. Database migreren van Postgres naar MySQL

  4. Webinar:bijhouden van queryvoortgang in SQL Server