[英]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.