簡體   English   中英

在 Postgres 中分組為 2 小時的間隔

[英]Grouping into interval of 2 hours in Postgres

我對我想做的 PostgreSQL 命令有一些困難。

select code,TIMESTAMP WITHOUT TIME ZONE 'epoch' +
INTERVAL '1 second' * round(extract('epoch' from created_at) / 7200) * 7200 as created_at,COUNT ("active" ) as active
from "otp"
GROUP BY "code", round(extract('epoch' from created_at) / 7200)

這是我的數據:

code      created_at            active
------    -------------------   ------
467380    2021-08-13 12:03:15   1
656608    2021-08-13 12:22:56   1
892624    2021-08-13 11:59:36   1
868549    2021-08-13 12:10:05   1
804703    2021-08-13 13:04:24   1

我試圖以 2 小時為間隔對它們進行分組,我得到這是我當前的輸出:

code      created_at            active 
------    -------------------   ------ 
467380    2021-08-13 12:00:00   1 
656608    2021-08-13 12:00:00   1 
892624    2021-08-13 12:00:00   1 
868549    2021-08-13 12:00:00   1 
804703    2021-08-13 14:00:00   1

但我想在 14 小時內將 12 小時到 14 小時之間的時間分組,而不是在 12 小時內分組,例如:

code      created_at            active 
------    -------------------   ------ 
467380    2021-08-13 14:00:00   1 
656608    2021-08-13 14:00:00   1 
892624    2021-08-13 12:00:00   1 
868549    2021-08-13 14:00:00   1 
804703    2021-08-13 14:00:00   1

我怎樣才能實現它?

我認為你需要date_bin

select code,
       date_bin('2 hours', created_at, '2000-01-01 00:00:00') as created_at,
       COUNT ("active" ) as active
from "otp"
GROUP BY "code",
         date_bin('2 hours', created_at, '2000-01-01 00:00:00');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM