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
Mary-Kate Olsenasal
2025-01-19 00:57:10366semak imbas

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>

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>

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>

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!

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