Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjana Kiraan Baris Larian dalam PostgreSQL untuk Setiap Minit, Termasuk Minit Tidak Aktif?

Bagaimana untuk Menjana Kiraan Baris Larian dalam PostgreSQL untuk Setiap Minit, Termasuk Minit Tidak Aktif?

Barbara Streisand
Lepaskan: 2025-01-19 01:02:12
asal
910 orang telah melayarinya

PostgreSQL: Menjana Kiraan Baris Berjalan Mengikut Minit, Termasuk Tempoh Tidak Aktif

Artikel ini menunjukkan cara menjana kiraan larian baris dalam jadual PostgreSQL untuk setiap minit, walaupun beberapa minit tidak mempunyai aktiviti.

How to Generate a Running Row Count in PostgreSQL for Each Minute, Including Inactive Minutes?

Kaedah 1: Kiraan Larian untuk Minit Aktif Sahaja

Pendekatan ini menggunakan fungsi tetingkap untuk mengira kiraan larian bagi setiap minit apabila aktiviti wujud:

<code class="language-sql">SELECT DISTINCT
       date_trunc('minute', "when") AS minute,
       count(*) OVER (ORDER BY date_trunc('minute', "when")) AS running_count
FROM   mytable
ORDER  BY 1;</code>
Salin selepas log masuk

date_trunc('minute', "when") kumpulan baris mengikut minit. Fungsi count(*) OVER (ORDER BY date_trunc('minute', "when")) menyediakan jumlah larian yang dipesan mengikut minit.

Kaedah 2: Termasuk Minit Tidak Aktif

Untuk memasukkan minit dengan aktiviti sifar, kami menggunakan generate_series untuk mencipta urutan minit yang lengkap dan LEFT JOIN untuk memasukkan kiraan:

<code class="language-sql">WITH cte AS (
   SELECT date_trunc('minute', "when") AS minute, COUNT(*) AS minute_ct
   FROM   mytable
   GROUP  BY 1
)
SELECT m.minute, COALESCE(sum(cte.minute_ct) OVER (ORDER BY m.minute), 0) AS running_count
FROM  (
   SELECT generate_series(min(minute), max(minute), interval '1 min') AS minute
   FROM   cte
) m
LEFT   JOIN cte USING (minute)
ORDER  BY 1;</code>
Salin selepas log masuk

CTE (cte) mengumpulkan baris mengikut minit dan mengiranya. generate_series mencipta satu siri minit yang merangkumi keseluruhan julat masa. LEFT JOIN menggabungkan siri ini dengan kiraan daripada cte dan COALESCE mengendalikan minit tanpa aktiviti dengan menetapkan kiraan larian 0. sum() OVER (ORDER BY m.minute) kemudian mengira jumlah kumulatif.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Kiraan Baris Larian dalam PostgreSQL untuk Setiap Minit, Termasuk Minit Tidak Aktif?. 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