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.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.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!