Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengehadkan Baris Dalam Setiap Kumpulan dalam PostgreSQL?

Bagaimana untuk Mengehadkan Baris Dalam Setiap Kumpulan dalam PostgreSQL?

DDD
Lepaskan: 2025-01-15 12:09:45
asal
559 orang telah melayarinya

How to Limit Rows Within Each Group in PostgreSQL?

Had pengelompokan PostgreSQL: paparkan N baris pertama dalam setiap kumpulan

Ia selalunya diperlukan dalam pangkalan data untuk mengekstrak bilangan baris yang terhad daripada kumpulan tertentu. Dalam PostgreSQL, keperluan ini boleh dipenuhi menggunakan klausa LIMIT bersama-sama dengan operasi kumpulan.

Contoh berikut menunjukkan keperluan untuk mendapatkan semula dua baris pertama (diisih mengikut lajur nama) dalam setiap kumpulan section_id. Contohnya, daripada jadual yang diberikan:

<code> id | section_id | name
----+------------+------
  1 |          1 | A
  2 |          1 | B
  3 |          1 | C
  4 |          1 | D
  5 |          2 | E
  6 |          2 | F
  7 |          3 | G
  8 |          2 | H</code>
Salin selepas log masuk

Kami mahu mencapai keputusan berikut:

<code> id | section_id | name
----+------------+------
  1 |          1 | A
  2 |          1 | B
  5 |          2 | E
  6 |          2 | F
  7 |          3 | G</code>
Salin selepas log masuk

Dalam versi PostgreSQL sebelum 8.4, terdapat kekurangan fungsi terbina dalam untuk mengendalikan pertanyaan sedemikian dengan cekap. Walau bagaimanapun, dalam PostgreSQL 8.4 dan lebih baru, penyelesaian baharu telah muncul:

<code class="language-sql">SELECT *
FROM (
  SELECT ROW_NUMBER() OVER (PARTITION BY section_id ORDER BY name) AS r, t.*
  FROM xxx t
) x
WHERE x.r <= 2;</code>
Salin selepas log masuk

Penyelesaian ini menggunakan fungsi tetingkap ROW_NUMBER() untuk memberikan nombor urutan kepada setiap baris dalam setiap partition section_id. Klausa ORDER BY menentukan kriteria pengisihan (nama dalam kes ini). Syarat LIMIT 2 kemudiannya digunakan pada subkueri, mengehadkan keputusan kepada dua baris pertama setiap kumpulan (diisih mengikut nama ).

Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Baris Dalam Setiap Kumpulan dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan