如何对GridDB中TIME_SAMPLING的查询结果按body_temperature排序?
GridDB 时序采样结果排序解决方案
要实现对TIME_SAMPLING查询结果按body_temperature排序,你需要将采样查询嵌套为子查询,在外层对聚合后的温度字段执行排序操作,具体方案如下:
方案1:基于默认聚合的快速排序
TIME_SAMPLING(*)会对数值型字段自动应用默认聚合函数(通常为AVG),返回的字段名会带上聚合后缀(如body_temperature_avg),直接在外层调用排序即可:
SELECT * FROM ( SELECT TIME_SAMPLING(*, TIMESTAMP('2023-07-01T00:00:00Z'), TIMESTAMP('2023-07-07T00:00:00Z'), 10, MINUTE) FROM My_Data_Table ) AS sampled_data ORDER BY body_temperature_avg ASC; -- 替换为DESC可实现降序排序
方案2:指定聚合逻辑的显式排序
如果需要自定义聚合规则(比如用MAX/MIN替代默认的AVG),可以显式定义字段和聚合函数,排序时直接使用自定义字段名:
SELECT * FROM ( SELECT TIME_SAMPLING( TIMESTAMP, AVG(heart_rate) AS heart_rate_avg, AVG(body_temperature) AS body_temperature_avg, TIMESTAMP('2023-07-01T00:00:00Z'), TIMESTAMP('2023-07-07T00:00:00Z'), 10, MINUTE ) FROM My_Data_Table ) AS sampled_data ORDER BY body_temperature_avg DESC;
关键说明
TIME_SAMPLING属于聚合查询,无法直接在其末尾追加ORDER BY,必须通过子查询将聚合结果转为临时表后再执行排序。- 若不确定聚合后的字段名,可先单独执行内层
TIME_SAMPLING查询,查看返回的字段结构后再编写排序语句。
内容的提问来源于stack exchange,提问作者Pratik Dwivedi
相关产品推荐
相关产品推荐

