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.