КАК ВЫБРАТЬ данные, основываясь как на периоде даты, так и на периоде времени в clickhouse - PullRequest
1 голос
/ 22 апреля 2019

Я хочу отфильтровать некоторые данные по yyyymmdd (дата) и hhmmss (время), но Clickhouse не поддерживает тип time. Поэтому я выбираю datetime, чтобы объединить их. Но как делать такие вещи:

Это код dolphindb (который поддерживает тип second для представления hhmmss.

select avg(ofr + bid) / 2.0 as avg_price
from taq
where
    date between 2007.08.05 : 2007.08.07,
    time between 09:30:00 : 16:00:00
group by symbol, date

Это код clickhouse, но логичный проблемный код.

SELECT avg(ofr + bid) / 2.0 AS avg_price
FROM taq
WHERE
    time BETWEEN '2007-08-05 09:30:00' AND '2007-08-07 16:00:00'
GROUP BY symbol, toYYYYMMDD(time)
;

как выразить это в sql, как код dolphindb?

1 Ответ

0 голосов
/ 22 апреля 2019

Предположим, что вы просто хотите усреднить торговую цену в обычные торговые часы, исключая после часовой торговли, тогда возможное решение:

SELECT avg(ofr + bid) / 2.0 AS avg_price
FROM taq
WHERE
    toYYYYMMDD(time) BETWEEN 20070805 AND 20070807 AND
    toYYYYMMDDhhmmss(time)%1000000 BETWEEN 93000 and 160000
GROUP BY symbol, toYYYYMMDD(time)

Фильтрует таблицу taq в указанные дату и время.

...