Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tính số người dùng hoạt động hàng tuần (WAU) trong MySQL

Người dùng hoạt động hàng tuần (WAU) là một chỉ số hiệu suất chính (KPI) hữu ích để theo dõi cho mọi doanh nghiệp trực tuyến. Nó cung cấp cho bạn một ý tưởng về số lượng người sử dụng sản phẩm / dịch vụ của bạn ít nhất một lần một tuần. Dưới đây là cách tính Người dùng hoạt động hàng tuần (WAU) trong MySQL.

Cách tính số người dùng hoạt động hàng tuần (WAU) trong MySQL

Giả sử bạn có những người dùng bảng sau (user_id, last_login). last_login là dấu thời gian của lần cuối cùng người dùng đăng nhập. Một số hệ thống cũng lưu trữ dấu thời gian này dưới dạng ngày_cửa_hóa, ngày_tập_dục, v.v.

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

Đây là truy vấn SQL để tính toán Người dùng hoạt động hàng tuần (WAU) trong MySQL, trong 1 tuần qua.

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

Phần thưởng đọc:Cách tính số người dùng hoạt động hàng tháng (MAU) trong MySQL

Nếu bạn muốn thêm bộ lọc (ví dụ:trạng thái =4) vào truy vấn của mình, bạn có thể thêm bộ lọc đó vào mệnh đề WHERE, như được hiển thị bên dưới bằng in đậm .

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

Nếu bạn muốn tính Số Người dùng Hoạt động Hàng tuần (WAU) cho mỗi tuần trong dữ liệu của mình, hãy sử dụng truy vấn SQL sau. Trong trường hợp này, chúng tôi chỉ cần sử dụng hàm WEEK để tổng hợp người dùng dựa trên last_login của họ giá trị.

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

Bạn có thể dễ dàng tùy chỉnh truy vấn trên để tính Người dùng hoạt động hàng tuần (WAU) trong MySQL và vẽ biểu đồ trên biểu đồ đường.

Nếu bạn muốn tính toán số lượng người dùng quay lại trang web của bạn mỗi tuần, thì đây là cách tính tỷ lệ giữ chân trong SQL.

Nếu bạn muốn tính Người dùng đang hoạt động hàng tuần cho mỗi ngày, tức là người dùng đang hoạt động trong 6 ngày trước đó, cho mỗi ngày, thì bạn có thể sử dụng truy vấn sau. Ở đây chúng tôi cũng tính DAU (Người dùng hoạt động hàng ngày) cùng với 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 |
+------------+-----+-----+

Trong truy vấn trên, cho mỗi ngày, chúng tôi tính số lượng người dùng riêng biệt đã đăng nhập vào ngày đó và 6 ngày trước đó.

Bây giờ bạn đã thấy các cách khác nhau để tính người dùng hoạt động hàng tuần (WAU) trong MySQL. Bạn có thể tùy chỉnh chúng theo yêu cầu của mình.

Bạn cũng có thể sử dụng công cụ biểu đồ để lập biểu đồ người dùng hoạt động hàng tuần trong biểu đồ thanh và chia sẻ nó với nhóm của bạn. Dưới đây là một ví dụ về biểu đồ thanh hiển thị WAU, được tạo bằng Ubiq

Nếu bạn muốn tạo biểu đồ, trang tổng quan và báo cáo từ cơ sở dữ liệu MySQL, bạn có thể thử Ubiq. Chúng tôi cung cấp bản dùng thử miễn phí 14 ngày.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mã lỗi:1005. Không thể tạo bảng '...' (errno:150)

  2. Cách phát hiện xem một giá trị có chứa ít nhất một chữ số trong MySQL hay không

  3. ClassCastException:java.math.BigInteger không thể được truyền sang java.lang.Long khi kết nối với MySQL

  4. Ngoại lệ Java JDBC MySQL:Hoạt động không được phép sau khi đóng ResultSet

  5. Giá trị gia tăng trong truy vấn cập nhật MySQL