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

Tính giá trị trung vị với Mysql

Tôi đề xuất một cách nhanh hơn.

Nhận số lượng hàng:

SELECT CEIL(COUNT(*)/2) FROM data;

Sau đó, lấy giá trị giữa trong một truy vấn con được sắp xếp:

SELECT max(val) FROM (SELECT val FROM data ORDER BY val limit @middlevalue) x;

Tôi đã thử nghiệm điều này với tập dữ liệu 5x10e6 gồm các số ngẫu nhiên và nó sẽ tìm ra giá trị trung bình trong vòng chưa đầy 10 giây.

Điều này sẽ tìm thấy một phân vị tùy ý bằng cách thay thế COUNT(*)/2 với COUNT(*)*n ở đâu n là phân vị (.5 cho trung vị, .75 cho phân vị thứ 75, v.v.).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngăn chặn cảnh báo PDO

  2. Chọn cột riêng biệt cùng với một số cột khác trong MySQL

  3. Kết hợp bất hợp pháp các đối chiếu cho hoạt động 'concat'

  4. Làm thế nào để chèn một tệp trong cơ sở dữ liệu MySQL?

  5. Quản lý tài khoản người dùng, vai trò, quyền, xác thực PHP và MySQL - Phần 4