Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan 10 Rekod Teratas dari Setiap Kategori Menggunakan SQL?
Mengekstrak 10 Rekod Teratas Setiap Kategori dengan SQL
Operasi pangkalan data yang kerap melibatkan pengambilan semula entri teratas daripada setiap kategori dalam satu pertanyaan SQL. Ini biasanya dicapai menggunakan fungsi penarafan digabungkan dengan pembahagian. Mari kita periksa cara melakukan ini menggunakan SQL, memfokuskan pada pangkalan data dengan kategori seperti "perniagaan," "tempatan" dan "ciri."
Penyelesaian SQL Server 2005 untuk 10 Rekod Teratas Setiap Bahagian
Dalam SQL Server 2005, pertanyaan berikut memberikan hasil yang diingini:
<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>
Pertanyaan ini memanfaatkan fungsi RANK()
untuk menentukan kedudukan setiap rekod dalam bahagian masing-masing, berdasarkan lajur RankCriteria
. Klausa PARTITION BY
memisahkan rekod dengan Section
, memastikan kedudukan bebas untuk setiap kategori.
Mengendalikan Hubungan dalam Kedudukan
Adalah penting untuk memahami bahawa RANK()
tidak mengendalikan hubungan dengan berkesan. Jika berbilang rekod berkongsi nilai RankCriteria
yang sama, mereka menerima kedudukan yang sama. Ini boleh membawa kepada lebih daripada 10 rekod yang dikembalikan untuk satu bahagian jika hubungan wujud.
Untuk mengurangkan perkara ini, pertimbangkan untuk menggunakan ROW_NUMBER()
sebaliknya. ROW_NUMBER()
memperuntukkan nombor jujukan yang unik dalam setiap partition, memberikan pilihan 10 teratas yang lebih tepat, walaupun pendekatan ini mungkin menambahkan kerumitan dalam beberapa senario.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan 10 Rekod Teratas dari Setiap Kategori Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!