Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Rekod N Teratas dengan Cekap Merentas Berbilang Kategori dalam SQL?

Bagaimana untuk Menyoal Rekod N Teratas dengan Cekap Merentas Berbilang Kategori dalam SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-21 06:11:08520semak imbas

How to Efficiently Query Top N Records Across Multiple Categories in SQL?

Mendapatkan semula Rekod N Teratas daripada Berbilang Kategori dalam SQL

Teknik SQL ini dengan cekap mendapatkan semula rekod N teratas (cth., 10 teratas) daripada pelbagai kategori dalam satu jadual.

<code class="language-sql">SELECT rs.Field1, rs.Field2
FROM (
    SELECT Field1, Field2,
    RANK() OVER (PARTITION BY Section ORDER BY RankCriteria DESC) AS Rank
    FROM table
) rs
WHERE Rank <= 10;</code>

Penjelasan:

  • Field1 dan Field2: Ini mewakili lajur yang ingin anda dapatkan semula.
  • Pernyataan SELECT dalam menggunakan fungsi tetingkap RANK(). PARTITION BY Section membahagikan data kepada kumpulan berdasarkan kategori 'Bahagian'. ORDER BY RankCriteria DESC mengisih rekod dalam setiap bahagian mengikut kriteria kedudukan anda dalam tertib menurun. Rank memberikan pangkat kepada setiap rekod dalam bahagiannya.
  • Pernyataan SELECT luar menapis keputusan, menyimpan hanya rekod dengan nilai Rank 10 atau kurang (Rank <= 10).

Kaedah ini cekap dan berfungsi walaupun pada sistem pangkalan data yang mungkin kekurangan fungsi menghadkan baris khusus. Ia sesuai apabila prestasi kritikal.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Rekod N Teratas dengan Cekap Merentas Berbilang Kategori dalam SQL?. 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