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

Bagaimana untuk Mengira Median dengan Cekap dalam MySQL?

Susan Sarandon
Lepaskan: 2025-01-20 15:13:09
asal
264 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan