Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan 10 Rekod Teratas untuk Setiap Kategori dalam SQL Server 2005?
Mengekstrak 10 Rekod Teratas setiap Kategori dalam SQL Server 2005
Panduan ini menunjukkan cara untuk mendapatkan semula 10 rekod teratas dengan cekap untuk setiap kategori (perniagaan, tempatan, ciri) daripada jadual SQL Server 2005, disusun mengikut tarikh kemasukan dan ditapis mengikut julat tarikh.
Pendekatan SQL:
Penyelesaian ini memanfaatkan subkueri dan fungsi tetingkap. Subkueri membahagikan data mengikut kategori (lajurSection
) dan menyusun rekod dalam setiap partition berdasarkan RankCriteria
menurun (cth., tarikh). Pertanyaan utama kemudian memilih hanya rekod yang mempunyai kedudukan kurang daripada atau sama dengan 10.
<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>
Nota Penting:
RankCriteria
yang sama dalam kategori, fungsi RANK()
boleh mengembalikan lebih daripada 10 rekod untuk kategori tersebut.RankCriteria
anda mempunyai nilai unik dalam setiap kategori. Pertimbangkan untuk menggunakan ROW_NUMBER()
dan bukannya RANK()
jika pesanan yang ketat diperlukan, walaupun dengan ikatan. ROW_NUMBER()
memberikan pangkat unik kepada setiap baris, tanpa mengira ikatan.Pertanyaan yang dioptimumkan ini menyediakan penyelesaian yang mantap untuk mendapatkan semula rekod N teratas bagi setiap kategori dalam SQL Server 2005. Ingat untuk menggantikan table
, Field1
, Field2
dan RankCriteria
dengan nama jadual dan lajur sebenar anda. Menambah klausa WHERE
pada pertanyaan dalaman akan membolehkan anda menapis mengikut julat tarikh seperti yang diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan 10 Rekod Teratas untuk Setiap Kategori dalam SQL Server 2005?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!