У меня есть столбец timestamp, для которого мне нужно вычислить разницу во времени и разделить ее на определенный набор интервалов.
для разницы во времени в часах я написал этот запрос
result = ActiveRecord::Base.connection.exec_query("SELECT id,(EXTRACT(EPOCH FROM CURRENT_TIMESTAMP - image_retouch_items.created_at)/3600)::INTEGER AS latency FROM image_retouch_items WHERE status= 0;");
Результат моего запроса
"id" "latency"
104 5928
106 5917
158 5751
162 5736
95 5940
85 5950
Как получить результат в виде набора интервалов (часов), например, для строки, для которой разница во времени лежит между диапазоном 0-24 hr, увеличить счет.
т.е.
interval count
0-24 2
24-48 3
48-72 0
Как получить это в одном запросе
Можно сделать что-то вроде этого SELECT COUNT(table_name.id) FROM generate_series(timestamp '2000-01-01 00:00' , timestamp '2000-01-02 00:00' , interval '24 hours') t(x);
@Vishal Это не работает, так как я выполнил вышеуказанный запрос, который я поместил в переменную result , к результату, который вы можете увидеть в моем обновленном вопросе при использовании этого запроса, как мне написать вашу часть generate_series





Это может быть полезно: stackoverflow.com/a/10607102/2640181