按工厂轮班时间对 table 数据 (id,machine_id,telemetry_time,riskscore,current) 进行分组,并将日期视为轮班开始时间

grouping the table data(id,machine_id,telemetry_time,riskscore,current) by plant shift time and considering date as shift startime

我有一个带有时间戳的 table 和一些其他指标,例如风险评分和 machine.Here 工厂轮班的电流从上午 08:00 开始并在第二天 08:00 结束. 我想按时间戳的日期(班次:08:00am 到第二天 08:00am)对数据进行分组,并将其标记为班次开始 date.i 有 6 个月的数据。) 预期输出:

machine | date       | avg_riskscore | avg_current
2       | 2020-12-02 |          25.5   |        10

这里这条记录是“2020-12-02 08:00:00”和“2020-12-03 08:00:00”之间的一组数据,应该插入日期为“2020-” 12-02'

这里我需要像这样汇总 6 个月的数据。

DB Fiddle

您可以将时间戳偏移 8 小时,然后截断为日期并聚合。根据您的 fiddle,那将是:

select 
    equipment_id, 
    (telemetry_time - interval '8 hour')::date as date, 
    avg(riskscore) as avg_riskscore,
    avg(i_rms) as avg_i_rms
from telemetry_test 
group by equipment_id, date