Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Jumlah Baris Berjalan setiap Minit dalam PostgreSQL?
PostgreSQL: Menjalankan jumlah bilangan baris pertanyaan mengikut minit
Gambaran Keseluruhan Masalah
Anda perlu mendapatkan jumlah bilangan baris seminit sehingga masa tertentu itu.
Cara terbaik untuk mengira jumlah
<code class="language-sql">SELECT DISTINCT date_trunc('minute', "when") AS minute, count(*) OVER (ORDER BY date_trunc('minute', "when")) AS running_ct FROM mytable ORDER BY 1;</code>
Pertanyaan ini menggunakan fungsi date_trunc()
untuk mengeluarkan hanya bahagian minit medan "bila". Fungsi count()
diagregatkan pada komponen minit terpotong ini sebagai fungsi tetingkap menyediakan jumlah berjalan.
Cara terpantas
<code class="language-sql">SELECT minute, sum(minute_ct) OVER (ORDER BY minute) AS running_ct FROM ( SELECT date_trunc('minute', "when") AS minute, count(*) AS minute_ct FROM tbl GROUP BY 1 ) sub ORDER BY 1;</code>
Pertanyaan ini diagregatkan menjadi subkueri untuk mengira bilangan baris seminit. Ia kemudian melakukan jumlah berjalan menggunakan fungsi tetingkap.
Kendalikan minit tidak aktif
Untuk memastikan setiap minit dikira, walaupun yang tiada aktiviti:
<code class="language-sql">SELECT m.minute, COALESCE(sum(c.minute_ct) OVER (ORDER BY m.minute), 0) AS running_ct FROM ( SELECT generate_series(date_trunc('minute', min("when")), max("when"), interval '1 min') FROM tbl ) m(minute) LEFT JOIN ( SELECT date_trunc('minute', "when") AS minute, count(*) AS minute_ct FROM tbl GROUP BY 1 ) c USING (minute) ORDER BY 1;</code>
Pertanyaan ini menggunakan generate_series()
untuk mencipta baris bagi setiap minit dalam julat dan LEFT JOIN
untuk mengira dan meringkaskan baris dalam jadual asas.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Baris Berjalan setiap Minit dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!