Bagaimanakah Saya Boleh Mengeluarkan Nilai Maksimum N Teratas Dengan Cekap Daripada Jadual MySQL?

DDD
Lepaskan: 2024-11-10 03:19:02
asal
906 orang telah melayarinya

How Can I Efficiently Extract the Top N Maximum Values From a MySQL Table?

Memilih Nilai n Maks Teratas daripada Jadual MySQL

Dalam jadual dengan berbilang titik data dan ciri kumpulan, mengenal pasti nilai n maksimum teratas boleh menjadi penting untuk data analisis. Artikel ini meneroka pendekatan yang cekap untuk mengekstrak nilai ini menggunakan MySQL.

Pendekatan tradisional menggunakan fungsi GROUP BY dan MAX() hanya memberikan nilai maksimum untuk setiap kumpulan, menjadikan pemilihan nilai n teratas tidak dipenuhi. Untuk mengatasi had ini, pendekatan berbilang pertanyaan digunakan.

Untuk memilih 2 nilai maksimum teratas daripada jadual sampel yang disediakan, pertanyaan berikut boleh digunakan:

SELECT max(column1) m 
FROM table t
GROUP BY column2
UNION
SELECT max(column1) m
FROM table t
WHERE column1 NOT IN (SELECT max(column1) 
                      WHERE column2 = t.column2)
Salin selepas log masuk

Pertanyaan ini mengembalikan hasil yang dijangkakan:

3
4
7
8
Salin selepas log masuk

Untuk nilai arbitrari n, teknik yang lebih maju boleh digunakan untuk mensimulasikan kedudukan fungsi. Artikel yang dipautkan dalam respons memberikan contoh terperinci tentang pendekatan sedemikian.

Secara khusus, pertanyaan yang diubah suai boleh digunakan untuk mencapai hasil yang diinginkan:

SELECT t.*
FROM
   (SELECT grouper,
          (SELECT val 
           FROM table li
           WHERE li.grouper = dlo.grouper
           ORDER BY
                 li.grouper, li.val DESC
           LIMIT 2,1) AS mid
   FROM 
      (
      SELECT DISTINCT grouper
      FROM table
      ) dlo 
   ) lo, table t
WHERE t.grouper = lo.grouper
      AND t.val > lo.mid
Salin selepas log masuk

Dengan menggantikan kerapu dan val dengan yang sesuai nama lajur, pertanyaan menjana hasil di mana setiap kumpulan mengandungi nilai n maksimum teratas.

Adalah penting untuk diperhatikan bahawa klausa LIMIT dalam subkueri mengawal nilai n, dengan sintaks LIMIT n,1. Dengan melaraskan n, bilangan nilai maksimum teratas yang diingini boleh diperoleh semula.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Nilai Maksimum N Teratas Dengan Cekap Daripada Jadual 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan