如何在TDengine下采样时获取最值对应的时间戳?
如何在TDengine下采样时获取最值对应的时间戳
你可以通过TDengine的max_by()和min_by()聚合函数直接实现需求,这两个函数能在每个时间窗口内返回指定字段取最值时对应的另一个字段值(这里就是时间戳)。
修改后的SQL语句如下:
select _wstart, max(val) as max_val, max_by(ts, val) as max_val_ts, min(val) as min_val, min_by(ts, val) as min_val_ts from d1001 interval(5s);
说明
max_by(ts, val):返回当前时间窗口内val取最大值时对应的ts时间戳min_by(ts, val):返回当前时间窗口内val取最小值时对应的ts时间戳
如果你的TDengine版本不支持max_by/min_by函数,可以改用窗口函数加分组的方式实现:
select _wstart, max_val, max(ts) filter(where val = max_val) as max_val_ts, min_val, min(ts) filter(where val = min_val) as min_val_ts from ( select _wstart, ts, val, max(val) over(partition by _wstart) as max_val, min(val) over(partition by _wstart) as min_val from d1001 interval(5s) ) t group by _wstart, max_val, min_val;
内容的提问来源于stack exchange,提问作者superman
相关产品推荐
相关产品推荐

