InfluxDB中提取各股票最新价格的查询方法
获取InfluxDB中每只股票的最新价格
针对你要提取每只股票最新价格的需求,在InfluxDB里可以用专门的聚合函数快速实现,比常规SQL的写法更贴合时序数据的特性:
最终查询语句
SELECT LAST(Price) AS Price, LAST(time) AS Time FROM stock_prices GROUP BY Ticker
为什么这么写?
LAST()是InfluxQL的聚合函数,会返回每个分组内时间最晚的那条记录的对应字段值;- 我们按
Ticker分组,这样每只股票会单独计算一组; - 同时提取
LAST(Price)得到最新价格,LAST(time)得到该价格对应的时间戳,正好匹配你想要的结果格式。
和常规SQL的对比
你提到常规SQL的写法,通常会用窗口函数来实现,比如:
SELECT Time, Ticker, Price FROM ( SELECT Time, Ticker, Price, ROW_NUMBER() OVER (PARTITION BY Ticker ORDER BY Time DESC) AS rn FROM stock_prices ) t WHERE rn = 1;
而InfluxDB作为时序数据库,针对这种“取分组内最新数据”的场景,用LAST() + GROUP BY的写法更简洁高效,不需要嵌套子查询。
验证结果
用你给出的示例数据执行上面的InfluxQL查询,会得到完全符合预期的结果:
| Time | Ticker | Price |
|---|---|---|
| 12:03 | IBM | 100.15 |
| 12:04 | MSFT | 51.00 |
| 12:05 | AMZN | 200.00 |
内容的提问来源于stack exchange,提问作者gt6989b
相关产品推荐
相关产品推荐

