Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menghimpun dan Mengagregatkan Nilai Angka Berturut-turut dalam PostgreSQL Menggunakan GROUP BY?

Bagaimana untuk Menghimpun dan Mengagregatkan Nilai Angka Berturut-turut dalam PostgreSQL Menggunakan GROUP BY?

Susan Sarandon
Lepaskan: 2025-01-09 13:31:41
asal
524 orang telah melayarinya

Cara menggunakan GROUP BY untuk mengagregatkan nilai berterusan dalam PostgreSQL

How to Group and Aggregate Consecutive Numeric Values in PostgreSQL Using GROUP BY?

PostgreSQL 9.0 dan yang lebih baru boleh mengagregatkan nilai angka berturut-turut dalam medan tertentu menggunakan klausa GROUP BY. Pertanyaan berikut menunjukkan cara untuk mencapai ini dalam jadual yang mengandungi medan syarikat, pekerjaan dan tahun:

Langkah 1: Kenal pasti nilai tidak berterusan

<code class="language-sql">-- 步骤一:识别非连续值
SELECT
  company,
  profession,
  year,
  CASE
    WHEN ROW_NUMBER() OVER (PARTITION BY company, profession ORDER BY year) = 1
    OR year - LAG(year, 1, year) OVER (PARTITION BY company, profession ORDER BY year) > 1
    THEN 1
    ELSE 0
  END AS group_cnt
FROM qualification;</code>
Salin selepas log masuk

Pertanyaan ini memberikan kiraan kumpulan (group_cnt) kepada setiap baris berdasarkan sama ada tahun berturut-turut. Baris dengan group_cnt 1 menunjukkan permulaan kumpulan baharu.

Langkah 2: Tentukan ID kumpulan

<code class="language-sql">-- 步骤二:定义分组 ID
SELECT
  company,
  profession,
  year,
  SUM(group_cnt) OVER (ORDER BY company, profession, year) AS group_nr
FROM qualification
WHERE group_cnt = 1;</code>
Salin selepas log masuk

Pertanyaan ini memberikan nombor kumpulan (kumpulan_nr) kepada setiap kumpulan. Setiap tahun berturut-turut tergolong dalam kumpulan yang sama.

Langkah 3: Agregat tahun berturut-turut

<code class="language-sql">-- 步骤三:聚合连续年份
SELECT
  company,
  profession,
  ARRAY_AGG(year) AS years
FROM qualification
WHERE group_cnt <> 0
GROUP BY
  company,
  profession,
  group_nr
ORDER BY
  company,
  profession,
  group_nr;</code>
Salin selepas log masuk

Pertanyaan akhir ini mengagregatkan tahun berturut-turut ke dalam tatasusunan dan menapis keluar baris bukan berturut-turut. Keputusan dikumpulkan mengikut syarikat dan pekerjaan.

Dengan mengikuti tiga langkah di atas, anda boleh mengagregatkan nilai berterusan dalam PostgreSQL dengan berkesan. Ambil perhatian bahawa jadual qualification hendaklah digantikan dengan nama jadual sebenar anda.

Atas ialah kandungan terperinci Bagaimana untuk Menghimpun dan Mengagregatkan Nilai Angka Berturut-turut dalam PostgreSQL Menggunakan GROUP BY?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan