查询时间序列最近 24 小时的变化

问题描述

有多个符号,每个符号在数据库中有一个带时间戳的时间序列 我使用以下查询获取几乎每个交易品种在时间序列中的最后一个元素。 但我还需要提取每个符号在过去 24 小时内的变化量,并以百分比形式报告。

query = """
SELECT "askPrice" FROM "bookTicker" where
time >= Now() - 10s and 
time <= Now() GROUP BY "symbol" limit 1
"""
D = client.query(query)
defaultdict(list,{('bookTicker',(('symbol','1000SHIBUSDT'),)):                                   askPrice
             2021-07-08 11:54:30.224000+00:00  0.007988,('bookTicker','1INCHUSDT'),)):                                   askPrice
             2021-07-08 11:54:29.730000+00:00    2.5377,'AAVEUSDT'),)):                                   askPrice
             2021-07-08 11:54:29.605000+00:00    284.03
...

bookTicker 度量具有以下标签['askPrice','askSize','bidPrice','bidSize'] 并且符号来自数据库中的其他测量值。 数据库太大了让我知道我还能提供什么来澄清问题。

你有什么想法吗? 我在 Review question 部分发现了许多类似的问题,但我无法从中得到最终结果。

编辑 只是一个想法:

可能这是获得每个时间序列的最后一个元素的更好方法

SELECT last("askPrice") FROM "bookTicker" WHERE time > Now() - 1m GROUP BY "symbol";

为了获得每个时间序列 24h 的值,我们需要从以下位置找到第一个元素:

SELECT first("askPrice") FROM "bookTicker" WHERE time > Now() - 24h GROUP BY "symbol"; 

似乎有效,但我不知道如何计算 (a_last-a_first)/a_first *100

SELECT last("askPrice") FROM "bookTicker" WHERE time > Now() - 1m  GROUP BY "symbol" MINUS
SELECT first("askPrice") FROM "bookTicker" WHERE time > Now() - 24h GROUP BY "symbol";  ???

解决方法

试试:

SELECT 
  (LAST("askPrice")-FIRST("askPrice"))/FIRST("askPrice")*100 
FROM "bookTicker" 
WHERE time > now() - 24h 
GROUP BY "symbol"