如何查询Apache IoTDB中指定时间段最大值对应的时间戳?
在Apache IoTDB中获取最大值及对应时间戳的查询语句
你可以通过两种常用方式实现需求,同时修正原语句中路径分隔符的问题(IoTDB中时间序列路径使用点.而非逗号,分隔):
方法一:子查询匹配最大值
通过子查询先获取目标时间段内的最大值,再在外层筛选出对应时间戳和数值:
SELECT time, DDS09 FROM root.22.B78624018 WHERE time >= 1675240584000 AND time <= 1675240704000 AND DDS09 = ( SELECT extreme(DDS09) FROM root.22.B78624018 WHERE time >= 1675240584000 AND time <= 1675240704000 )
如果存在多个时间点取到相同最大值,该语句会返回所有符合条件的记录。
方法二:排序加限制
将目标时间段内的记录按数值降序排列,取第一条即可得到最大值及对应时间戳:
SELECT time, DDS09 FROM root.22.B78624018 WHERE time >= 1675240584000 AND time <= 1675240704000 ORDER BY DDS09 DESC, time DESC LIMIT 1
这里额外添加time DESC是为了在存在多个相同最大值时,返回时间最晚的那条记录;若需要最早的,可改为time ASC或者省略(IoTDB默认按时间升序排序)。
内容的提问来源于stack exchange,提问作者brook
相关产品推荐
相关产品推荐

