需要在特定的 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
大家好,我对 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