嘿伙计们我对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等。
这可能吗?
答案 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