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

Tính toán decile từ lần truy cập gần đây trong MySQL

Đôi khi bạn có thể muốn tính toán decile từ lần truy cập gần đây trong MySQL dựa trên. Ví dụ:để xếp hạng khách hàng dựa trên lần mua hàng hoặc đơn đặt hàng gần đây thay vì dựa trên tổng doanh số bán hàng.

Tính toán giảm từ lần truy cập gần đây

Điều này giúp tạo ưu đãi đặc biệt cho những người gần đây đã mua thứ gì đó trên trang web của bạn. Chưa có chức năng nào cho nó. Đây là một truy vấn được tạo sẵn để thực hiện.

Ví dụ:Bạn có một bảng đơn đặt hàng trong đó chứa tất cả các đơn đặt hàng sản phẩm cho mỗi người dùng. Bạn muốn tính toán decile từ lần truy cập gần đây của các đơn đặt hàng.

order
+-----------+------------+------------------+
|  user_id  |   product  |   purchase_date  |
+-----------+------------+------------------+
|     1     |     Soap   |     2013-11-20   |
|     4     |   Perfume  |     2013-07-02   |
|     1     |   Noodles  |     2013-10-20   |
|     4     |     Soap   |     2013-11-11   |
|     1     |    Glue    |     2013-09-12   |
|     3     |     Deo    |     2013-10-20   |
+-----------+------------+------------------+
deciles
+-----------+----------------+---------+---------------+
|  user_id  |   latest       |  rank   |     decile    |
+-----------+----------------+---------+---------------+
|     1     |  2013-11-20    |    1    |      100      |
|     4     |  2013-11-11    |    2    |     66.67     |
|     3     |  2013-10-20    |    3    |     33.33     |
+-----------+----------------+---------+---------------+

Đây là một truy vấn bạn có thể sử dụng để tính toán số thập phân từ lần truy cập gần đây trong MySQL. Chỉ cần thay thế các cột - user_id, buy_date và table - order. Nó có ngày mua mới nhất cho mỗi người dùng. Sau đó, nó xếp hạng chúng vào ngày mua mới nhất. Cuối cùng, nó tính toán decile bằng cách sử dụng xếp hạng.

select user_id,latest,rank,round(10*(cnt-rank+1)/cnt,0) as decile from   
(SELECT  user_id,latest,@curRank := @curRank + 1 AS rank
FROM      (select user_id,max(purchase_date) as latest from `order` group by user_id)
p, (SELECT @curRank := 0) r
ORDER BY  latest desc ) as dt,(select count(distinct user_id) as cnt from
`order`) as ct

Nếu bạn đã có ngày mua hàng mới nhất cho từng người dùng trong bảng và muốn trực tiếp sử dụng bảng để tính toán khoảng cách từ lần mua hàng gần đây, thì đây là một truy vấn

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cập nhật nhiều cột trong MySQL

  2. MySQL chuyển đổi chuỗi ngày thành dấu thời gian Unix

  3. Ví dụ về TO_DAYS () - MySQL

  4. MySQL - Phiên bản MySQL này chưa hỗ trợ 'LIMIT &IN / ALL / ANY / SOME truy vấn con

  5. Cách nhập tệp excel vào cơ sở dữ liệu MySQL