【发布时间】:2022-11-21 09:20:26
【问题描述】:
我正在尝试运行一个查询,从股票交易中获取 OHLC 统计信息。为此,我创建了以下查询:
SELECT
SUM(T.size),
SUM(T.size) / SUM(T.price),
FIRST_VALUE(T.price),
LAST_VALUE(T.price),
MAX(T.price),
MIN(T.price),
FLOOR(T.sip_timestamp / 3600000000000)
FROM (
SELECT *
FROM trades AS T
WHERE
T.symbol = 'NTAP' AND
T.sip_timestamp >= 1640995200000000000 AND
T.sip_timestamp < 1672531200000000000
ORDER BY T.sip_timestamp) AS T
GROUP BY FLOOR(T.sip_timestamp / 3600000000000)
这应该通过将交易数据过滤到时间戳窗口,按时间段(等于一小时)对其进行分组,然后据此计算统计数据来工作。成交量、加权值、最高价、最低价和开盘时间值很简单,但我无法生成开盘价和收盘价。我正在使用 FIRST_VALUE 和 LAST_VALUE 窗口函数,但我不确定如何使它们在分组上下文中工作。有谁知道如何在这里获得正确的结果?
【问题讨论】:
标签: sql group-by snowflake-cloud-data-platform