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:
<code class="language-sql">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) )</code>
Tafsiran kod:
Versi yang dioptimumkan bagi pertanyaan ini menggunakan operasi kiraan baris untuk mengelakkan hantaran kedua atau menyertai:
<code class="language-sql">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 )</code>
MariaDB versi 10.3.3 termasuk fungsi MEDIAN terbina dalam:
<code class="language-sql">SELECT MEDIAN(val) AS median_val FROM data</code>
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!