Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan 10 Rekod Teratas dari Setiap Kategori Menggunakan SQL?

Bagaimana untuk Mendapatkan 10 Rekod Teratas dari Setiap Kategori Menggunakan SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-21 05:57:12988semak imbas

How to Retrieve the Top 10 Records from Each Category Using 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!

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