按天分组自定义时间间隔
Group By day for custom time interval
我对 SQL 和时间序列数据库还很陌生。我正在使用板条箱数据库。我想按天汇总数据。 但是我想开始每天的开始时间是上午 9 点而不是上午 12 点。。
时间间隔是上午 9 点到晚上 11.59。
Unix 时间戳用于存储数据。以下是我的示例数据库。
|sensorid | reading | timestamp|
====================================
|1 | 1616457600 | 10 |
|1 | 1616461200 | 100 |
|2 | 1616493600 | 1 |
|2 | 1616493601 | 10 |
目前我使用以下命令进行分组。但它给出的开始时间是凌晨 12 点。
select date_trunc('day', v.timestamp) as day,sum(reading)
from sensor1 v(timestamp)
group by (DAY)
来自以上table。我想要 1616493600 和 1616493601 数据的总和(11 是结果)。因为1616457600和1616461200是早上9点不到的数据。
您想将午夜加九个小时:
date_trunc('day', v.timestamp) + interval '9' hour
编辑: 如果你想从你添加的数据中排除 9:00 之前的小时数,你必须添加一个 WHERE
子句:
where extract(hour from v.timestamp) >= 9
这是包含所有相关数据的完整查询:
select
date_trunc('day', v.timestamp) as day,
date_trunc('day', v.timestamp) + interval '9' hour as day_start,
min(v.timestamp) as first_data,
max(v.timestamp) as last_data,
sum(reading) as total_reading
from sensor1 v(timestamp)
where extract(hour from v.timestamp) >= 9
group by day
order by day;
我对 SQL 和时间序列数据库还很陌生。我正在使用板条箱数据库。我想按天汇总数据。 但是我想开始每天的开始时间是上午 9 点而不是上午 12 点。。
时间间隔是上午 9 点到晚上 11.59。
Unix 时间戳用于存储数据。以下是我的示例数据库。
|sensorid | reading | timestamp|
====================================
|1 | 1616457600 | 10 |
|1 | 1616461200 | 100 |
|2 | 1616493600 | 1 |
|2 | 1616493601 | 10 |
目前我使用以下命令进行分组。但它给出的开始时间是凌晨 12 点。
select date_trunc('day', v.timestamp) as day,sum(reading)
from sensor1 v(timestamp)
group by (DAY)
来自以上table。我想要 1616493600 和 1616493601 数据的总和(11 是结果)。因为1616457600和1616461200是早上9点不到的数据。
您想将午夜加九个小时:
date_trunc('day', v.timestamp) + interval '9' hour
编辑: 如果你想从你添加的数据中排除 9:00 之前的小时数,你必须添加一个 WHERE
子句:
where extract(hour from v.timestamp) >= 9
这是包含所有相关数据的完整查询:
select
date_trunc('day', v.timestamp) as day,
date_trunc('day', v.timestamp) + interval '9' hour as day_start,
min(v.timestamp) as first_data,
max(v.timestamp) as last_data,
sum(reading) as total_reading
from sensor1 v(timestamp)
where extract(hour from v.timestamp) >= 9
group by day
order by day;