Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obliczyć tygodniowych aktywnych użytkowników (WAU) w MySQL?

Tygodniowy aktywny użytkownik (WAU) to przydatny kluczowy wskaźnik wydajności (KPI) do śledzenia dla każdej firmy online. Daje wyobrażenie, ile osób korzysta z Twojego produktu/usługi przynajmniej raz w tygodniu. Oto jak obliczyć liczbę aktywnych użytkowników tygodniowo (WAU) w MySQL.

Jak obliczyć tygodniowych aktywnych użytkowników (WAU) w MySQL

Załóżmy, że masz następującą tabelę users (user_id, last_login). last_login to sygnatura czasowa ostatniego logowania użytkownika. Niektóre systemy przechowują ten sygnaturę czasową jako data_modyfikacji, data_aktualizacji, itp.

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

Oto zapytanie SQL do obliczenia liczby aktywnych użytkowników tygodniowo (WAU) w MySQL za ostatni tydzień.

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

Przeczytaj bonus:Jak obliczyć miesięcznych aktywnych użytkowników (MAU) w MySQL

Jeśli chcesz dodać filtry (np. status=4) do zapytania, możesz dodać je do klauzuli WHERE, jak pokazano poniżej pogrubieniem .

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

Jeśli chcesz obliczyć tygodniowych aktywnych użytkowników (WAU) dla każdego tygodnia danych, użyj następującego zapytania SQL. W tym przypadku po prostu używamy funkcji TYDZIEŃ, aby agregować użytkowników na podstawie ich last_login wartości.

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

Możesz łatwo dostosować powyższe zapytanie, aby obliczyć tygodniowych aktywnych użytkowników (WAU) w MySQL i wykreślić ich na wykresie liniowym.

Jeśli chcesz obliczyć, ilu użytkowników powraca do Twojej witryny co tydzień, oto jak obliczyć współczynnik retencji w SQL.

Jeśli chcesz obliczyć Tygodniowe Aktywnych Użytkowników na każdy dzień, czyli aktywnych użytkowników z ostatnich 6 dni, na każdy dzień, możesz użyć następującego zapytania. Tutaj obliczamy również DAU (dziennie aktywni użytkownicy) obok 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 |
+------------+-----+-----+

W powyższym zapytaniu dla każdego dnia liczymy liczbę różnych użytkowników, którzy zalogowali się tego dnia i poprzedzających 6 dni.

Teraz widziałeś różne sposoby obliczania tygodniowych aktywnych użytkowników (WAU) w MySQL. Możesz je dostosować zgodnie ze swoimi wymaganiami.

Możesz także użyć narzędzia do tworzenia wykresów, aby wykreślić tygodniowych aktywnych użytkowników na wykresie słupkowym i udostępnić je swojemu zespołowi. Oto przykład wykresu słupkowego przedstawiającego WAU, utworzonego za pomocą Ubiq

Jeśli chcesz tworzyć wykresy, dashboardy i raporty z bazy danych MySQL, możesz wypróbować Ubiq. Oferujemy 14-dniowy bezpłatny okres próbny.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj różnicę lat między dwiema datami w MySQL jako liczbę całkowitą

  2. Baza danych Python i MySQL:praktyczne wprowadzenie

  3. Klucz obcy MySQL InnoDB między różnymi bazami danych

  4. Czy w MySQL mogę odroczyć sprawdzanie integralności referencyjnej do momentu zatwierdzenia?

  5. Przewodnik po projektowaniu bazy danych dla wydarzeń kalendarza i przypomnień w MySQL