Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan 10 Rekod Teratas untuk Setiap Kategori dalam SQL Server 2005?

Bagaimana untuk Mendapatkan 10 Rekod Teratas untuk Setiap Kategori dalam SQL Server 2005?

Barbara Streisand
Barbara Streisandasal
2025-01-21 05:52:13309semak imbas

How to Retrieve the Top 10 Records for Each Category in 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:

  • Kriteria Kedudukan Pendua: Jika berbilang rekod berkongsi nilai RankCriteria yang sama dalam kategori, fungsi RANK() boleh mengembalikan lebih daripada 10 rekod untuk kategori tersebut.
  • 10 Teratas Dijamin: Untuk menjamin tepat 10 rekod setiap kategori, pastikan lajur 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!

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