Dalam analisis statistik dan tafsiran data, menentukan median set data adalah penting. Walaupun MySQL menyediakan fungsi AVG() yang mudah untuk mengira purata, mencari median memerlukan pendekatan yang berbeza. Artikel ini menyediakan penyelesaian yang dipermudahkan untuk mengira median menggunakan satu pertanyaan MySQL.
MySQL menyediakan cara yang lebih cekap daripada mengisih dan memilih baris dalam PHP:
SELECT AVG(dd.val) as median_val FROM ( SELECT d.val, @rownum:=@rownum+1 as `row_number`, @total_rows:=@rownum FROM data d, (SELECT @rownum:=0) r WHERE d.val is NOT NULL -- (在此处添加任何where子句) ORDER BY d.val ) as dd WHERE dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) )
Tafsiran kod:
Versi yang dioptimumkan bagi pertanyaan ini menggunakan operasi kiraan baris untuk mengelakkan hantaran kedua atau menyertai:
SELECT AVG(dd.val) as median_val FROM ( SELECT d.val, (@rownum:=@rownum+1) as `row_number` -- 性能优化 FROM data d, (SELECT @rownum:=0) r WHERE d.val is NOT NULL -- (添加where子句) ORDER BY d.val ) as dd WHERE dd.row_number IN ( FLOOR((@rownum)/2), FLOOR((@rownum)/2)+1 ) -- 或 FLOOR((@rownum)/2), FLOOR((@rownum)/2)+1 )
MariaDB versi 10.3.3 termasuk fungsi MEDIAN terbina dalam:
SELECT MEDIAN(val) AS median_val FROM data
Bersama-sama, kaedah ini menyediakan penyelesaian yang mudah dan cekap untuk mengira median dalam MySQL, membolehkan pembangun mengekstrak cerapan bermakna daripada data dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Median dengan Cekap dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!