Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Median dengan Cekap dalam MySQL?

Bagaimana untuk Mengira Median dengan Cekap dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2025-01-20 15:13:09291semak imbas

How to Efficiently Calculate the Median in MySQL?

Kira median MySQL dengan mudah

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.

Pengiraan median yang cekap

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:

  • Subkueri mengira nombor baris dan jumlah bilangan baris untuk setiap nilai.
  • Fungsi AVG() mengira purata median.
  • Klausa IN menapis hasil dan termasuk baris tengah jika bilangan baris ialah nombor genap.

Peningkatan prestasi

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>

Peningkatan MariaDB

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn