Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Kiraan Baris Berjalan mengikut Minit dalam PostgreSQL?

Bagaimana untuk Mengira Kiraan Baris Berjalan mengikut Minit dalam PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2025-01-19 00:57:10
asal
333 orang telah melayarinya

How to Calculate a Running Row Count by Minute in PostgreSQL?

PostgreSQL: Kira kiraan baris hasil pertanyaan mengikut minit

Artikel ini menerangkan cara menggunakan fungsi tetingkap dalam PostgreSQL untuk mengira bilangan baris berjalan hasil pertanyaan mengikut minit.

1. Bilangan baris seminit

Pertanyaan berikut mengembalikan bilangan baris seminit:

<code class="language-sql">SELECT
  COUNT(id) AS count,
  EXTRACT(hour FROM "when") AS hour,
  EXTRACT(minute FROM "when") AS minute
FROM
  mytable
GROUP BY
  hour,
  minute;</code>
Salin selepas log masuk

2. Bilangan terkumpul baris seminit

Untuk mengira bilangan terkumpul baris seminit, anda boleh menggunakan pertanyaan berikut:

<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
  minute;</code>
Salin selepas log masuk

Arahan:

  • date_trunc('minute', "when") Potong lajur cap masa "bila" kepada minit terdekat.
  • COUNT(*) OVER (ORDER BY date_trunc('minute', "when")) Mengira bilangan baris yang dijalankan seminit. Klausa ORDER BY menentukan susunan baris agregat.
  • DISTINCT digunakan untuk memastikan bahawa hanya minit unik dikembalikan. Ini kerana fungsi agregat COUNT akan mengembalikan berbilang baris untuk minit yang sama.

3. Termasuk minit tanpa aktiviti

Jika anda ingin memasukkan minit tanpa aktiviti dalam hasil carian, anda boleh menggunakan pertanyaan berikut:

<code class="language-sql">SELECT
  m.minute,
  COALESCE(SUM(c.minute_count) OVER (ORDER BY m.minute), 0) AS running_count
FROM
  (
    SELECT
      generate_series(MIN(minute), MAX(minute), INTERVAL '1 minute') AS minute
    FROM
      (
        SELECT
          date_trunc('minute', "when") AS minute,
          COUNT(*) AS minute_count
        FROM
          mytable
        GROUP BY
          minute
      ) AS sub
  ) AS m
LEFT JOIN
  (
    SELECT
      date_trunc('minute', "when") AS minute,
      COUNT(*) AS minute_count
    FROM
      mytable
    GROUP BY
      minute
  ) AS c
ON
  m.minute = c.minute
ORDER BY
  m.minute;</code>
Salin selepas log masuk

Arahan:

  • Pertanyaan ini menggunakan LEFT JOIN untuk memasukkan minit tanpa aktiviti.
  • generate_series() Fungsi menjana julat minit antara minit minimum dan maksimum dalam jadual.
  • Fungsi
  • COALESCE() memastikan bahawa minit tanpa aktiviti mempunyai kiraan larian 0.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Kiraan Baris Berjalan mengikut Minit 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan