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

Need to get results over 7 days that are in a specific 30 min time range :45 - :15 on the hour every hour

大家好,我对 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

24 小时内 window 小时前 :45 小时后 :15 分钟

例如,我想报告

5 次操作 range_1_99

10 range_100_149

6 range_150_199

0 在 range_200_249

15 range_250_up

发生在 09:45 - 10:15

之间

然后 10:45 - 11:15 等相同

这可能吗?

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