需要在7天内获得特定30分钟时间范围内的结果:45-:每小时15小时

时间:2016-11-09 19:21:53

标签: postgresql psql

嘿伙计们我对psql有点新意,需要收集一些我不确定的数据。

所以我有7天的数据。列是

user_id

IMPORT_DATE

range_1_99

range_100_149

range_150_199

range_200_249

range_250_up

我需要知道在

下发生了多少次行动

range_1_99

range_100_149

range_150_199

range_200_249

range_250_up

在30分钟的窗口中:小时前45小时和小时24小时后15小时

例如,我想报告

range_1_99上的5个操作

10 on range_100_149

6 on range_150_199

range_200_249上的

0

15 on range_250_up

发生在09:45 - 10:15之间

然后是10:45 - 11:15等。

这可能吗?

1 个答案:

答案 0 :(得分:1)

select ts_range,
    sum(range_1_99) as range_1_99,
    sum(range_100_149) as range_100_149,
    sum(range_150_199) as range_150_199,
    sum(range_200_249) as range_200_249,
    sum(range_250_up) as range_250_up
from
    t
    right join (
        select tsrange (
            date_trunc('hour', d) + interval '45 min',
            date_trunc('hour', d) + interval '75 min'
        ) as ts_range
        from generate_series (
            (select min(import_date) from t),
            (select max(import_date) from t),
            interval '1 hour'
        ) gs (d)
    ) r on import_date <@ ts_range
group by ts_range