Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mengambil N Baris Pertama Dalam Setiap Kumpulan dalam PostgreSQL?

Bagaimana untuk Cekap Mengambil N Baris Pertama Dalam Setiap Kumpulan dalam PostgreSQL?

Barbara Streisand
Barbara Streisandasal
2025-01-15 11:05:45446semak imbas

How to Efficiently Fetch the First N Rows Within Each Group in PostgreSQL?

PostgreSQL: Mendapatkan semula N Baris Teratas Dalam Setiap Kumpulan

Tugas yang kerap dalam PostgreSQL melibatkan pemilihan bilangan baris daripada setiap kumpulan. Ini boleh dicapai dengan cekap menggunakan teknik yang sering dipanggil "LIMIT Berkumpulan." Begini cara untuk mencapainya menggunakan fungsi tetingkap (tersedia dalam PostgreSQL 8.4 dan lebih baru):

<code class="language-sql">SELECT *
FROM (
  SELECT
    ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS rn,
    t.*
  FROM xxx t
) AS x
WHERE rn <= N;</code>

Penjelasan:

Fungsi tetingkap ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) memberikan kedudukan unik (rn) kepada setiap baris dalam setiap kumpulan section_id, disusun mengikut lajur name. Pertanyaan luar kemudian menapis hasil ini, mengekalkan hanya baris yang kedudukannya (rn) kurang daripada atau sama dengan N (gantikan N dengan bilangan baris yang anda inginkan bagi setiap kumpulan). Ini secara berkesan mengehadkan hasil ke baris N teratas untuk setiap kumpulan.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengambil N Baris Pertama Dalam Setiap Kumpulan dalam PostgreSQL?. 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