Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara sederhana untuk menghitung median dengan MySQL

Di MariaDB / MySQL:

SELECT AVG(dd.val) as median_val
FROM (
SELECT d.val, @rownum:[email protected]+1 as `row_number`, @total_rows:[email protected]
  FROM data d, (SELECT @rownum:=0) r
  WHERE d.val is NOT NULL
  -- put some where clause here
  ORDER BY d.val
) as dd
WHERE dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) );

Steve Cohen menunjukkan, bahwa setelah lintasan pertama, @rownum akan berisi jumlah total baris. Ini dapat digunakan untuk menentukan median, jadi tidak diperlukan pass atau join kedua.

Juga AVG(dd.val) dan dd.row_number IN(...) digunakan untuk menghasilkan median dengan benar jika jumlah record genap. Alasan:

SELECT FLOOR((3+1)/2),FLOOR((3+2)/2); -- when total_rows is 3, avg rows 2 and 2
SELECT FLOOR((4+1)/2),FLOOR((4+2)/2); -- when total_rows is 4, avg rows 2 and 3

Terakhir, MariaDB 10.3.3+ berisi fungsi MEDIAN



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengatur Set Karakter dan Susunan Tabel di MySQL

  2. Bagaimana Mengonversi datetime ke UTC di MySQL

  3. Bagaimana cara mendapatkan tipe numerik dari MySQL menggunakan PDO?

  4. Cara Mendapatkan Catatan Antara 2 Tanggal di MySQL

  5. Menggunakan pemicu MySQL