如何在Apache IoTDB中获取温度最大值对应的所有时间戳?
在Apache IoTDB 2.0.6中获取最大值对应的所有时间戳
问题场景
现有sensor_data表数据如下:
select * from sensor_data order by time +-----------------------------+---------+-----------+ | time | sensor_id|temperature| +-----------------------------+---------+-----------+ |2024-01-01T08:00:00.000+08:00| s001 | 25.0 | |2024-01-01T09:00:00.000+08:00| s002 | 30.0 | |2024-01-01T10:00:00.000+08:00| s003 | 28.0 | |2024-01-01T11:00:00.000+08:00| s004 | 30.0 | +-----------------------------+---------+-----------+
执行SELECT max_by(time, temperature) FROM sensor_data仅返回单个时间戳:
+-----------------------------+ | _col0 | +-----------------------------+ |2024-01-01T11:00:00.000+08:00| +-----------------------------+
但实际需要获取所有温度等于最大值(30.0)的时间戳。
解决方案
使用子查询先获取温度的最大值,再筛选出所有温度等于该最大值的记录,提取对应的时间戳:
SELECT time FROM sensor_data WHERE temperature = (SELECT max(temperature) FROM sensor_data)
执行后将得到期望结果:
+-----------------------------+ | time | +-----------------------------+ |2024-01-01T09:00:00.000+08:00| |2024-01-01T11:00:00.000+08:00| +-----------------------------+
说明
MAX_BY属于聚合函数,仅会返回一行结果。通过子查询获取最大值后,用WHERE条件过滤匹配的记录,就能得到所有符合条件的时间戳,满足多值场景的需求。
内容的提问来源于stack exchange,提问作者Yangyang Xun
相关产品推荐
相关产品推荐

