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

Tính toán decile từ tần suất trong MySQL

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

Tính toán phân rã từ tần số

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 số lượng từ tần suất đặt hàng.

order
+------+--------------+-------------+
|  user_id  |   product  |   sales  |
+-----------+------------+----------+
|     1     |     Soap   |    10    |
|     4     |   Perfume  |   100    |
|     1     |   Noodles  |   20     |
|     4     |     Soap   |   10     |
|     1     |    Glue    |   20     |
|     3     |     Deo    |   200    |
+-----------+------------+----------+
deciles
+-----------+----------+---------+---------------+
|  user_id  |   total  |  rank   |     decile    |
+-----------+----------+---------+---------------+
|     1     |     3    |    1    |      10       |
|     4     |     2    |    2    |       7       |
|     3     |     1    |    3    |       3       |
+-----------+----------+---------+---------------+

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

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

Nếu bạn đã có số lượng đơn đặt hàng cho mỗi người dùng trong bảng và muốn trực tiếp sử dụng bảng để tính toán số thập phân từ tần suất hoặc số lượng, 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ác ký tự đặc biệt trong tên bảng MySQL

  2. Hiểu về BẢNG TRUNCATE của MySQL bằng các ví dụ thực tế

  3. Mysql:Thiết lập định dạng DATETIME thành 'DD-MM-YYYY HH:MM:SS' khi tạo bảng

  4. chuyển đổi ngày php sang định dạng mysql

  5. Làm cách nào để viết lại thành công mã mysql-php cũ bằng các hàm mysql_ * không dùng nữa?