我有一個 'requests' 表,其中有一個 'time_request' 列,每個請求都有一個時間戳。我想知道我在一分??鐘內收到的最大請求量。
所以我猜我需要以某種方式“分組”一個1m的時間間隔,然后做某種MAX(COUNT(request_id))?盡管不允許嵌套聚合。
將不勝感激任何幫助。
表格示例:
request_id | time_request
------------------ ---------------------
ab1 | 2021-03-29 16:20:05
ab2 | 2021-03-29 16:20:20
bc3 | 2021-03-31 20:34:07
fw3 | 2021-03-31 20:38:53
fe4 | 2021-03-31 20:39:53
預期結果:2(一分鐘內最多有 2 個請求)
謝謝!
uj5u.com熱心網友回復:
您可以使用視窗函式count并指定一分鐘的邏輯間隔作為視窗邊界。它將計算每一行的計數,并將計算一分鐘前的所有行。
Postgres 的代碼如下:
with a as ( select id , cast(ts as timestamp) as ts from(values ('ab1', '2021-03-29 16:20:05'), ('ab2', '2021-03-29 16:20:20'), ('bc3', '2021-03-31 20:34:07'), ('fw3', '2021-03-31 20:38:53'), ('fe4', '2021-03-31 20:39:53') ) as t(id, ts) ) , count_per_interval as ( select a.* , count(id) over ( order by ts asc range between interval '1' minute preceding and current row ) as cnt_per_min from a ) select max(cnt_per_min) from count_per_interval| 最大 | | --: | | 2 |
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/407720.html
標籤:
上一篇:如何在SQL的同一查詢中創建多個視圖,然后加入它們?
下一篇:按型別選擇具有最大值的值
