Предположим, мои необработанные данные:
Timestamp High Low Volume
10:24.22345 100 99 10
10:24.23345 110 97 20
10:24.33455 97 89 40
10:25.33455 60 40 50
10:25.93455 40 20 60
При шаге расчета 1 секунда выходные данные должны быть следующими (добавить дополнительный столбец):
Timestamp High Low Volume Count
10:24 110 89 70 3
10:25 60 20 110 2
Единица выборки варьируется от 1 second, 5 sec, 1 minute, 1 hour, 1 day, ...
Как быстро запросить выборочные данные в базе данных PostgreSQL с помощью Rails?
Я хочу заполнить весь интервал, получив ошибку
ERROR: JOIN/USING types bigint and timestamp without time zone cannot be matched
SQL
SELECT
t.high,
t.low
FROM
(
SELECT generate_series(
date_trunc('second', min(ticktime)) ,
date_trunc('second', max(ticktime)) ,
interval '1 sec'
) FROM czces AS g (time)
LEFT JOIN
(
SELECT
date_trunc('second', ticktime) AS time ,
max(last_price) OVER w AS high ,
min(last_price) OVER w AS low
FROM czces
WHERE product_type ='TA' AND contract_month = '2014-08-01 00:00:00'::TIMESTAMP
WINDOW w AS (
PARTITION BY date_trunc('second', ticktime)
ORDER BY ticktime ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
) t USING (time)
ORDER BY 1
) AS t ;
"Timestamp"
не является действительнымtimestamp
, а простоtime
. Это предназначено? - person Erwin Brandstetter   schedule 08.12.2014