在QuestDB中是否可使用任意时间戳列执行SAMPLE BY操作?
在QuestDB中用非指定时间戳列执行SAMPLE BY操作
当然可以用其他列来执行SAMPLE BY,但有个关键前提:目标列必须是数值类型(比如INT、LONG、DOUBLE这类),字符串、布尔值这类非数值列不行。
具体用法示例
假设你有一张包含sensor_id(数值型)和读数的表,想要按每5个传感器ID的区间来聚合统计数量,写法如下:
SELECT count(*) FROM sensor_readings SAMPLE BY 5 ON sensor_id;
这里的逻辑和时间戳列的SAMPLE BY一致,只是把时间区间换成了数值区间——把sensor_id的值按5为步长划分成一个个区间,然后对每个区间内的数据做聚合。
注意点
- 非时间戳列的采样完全基于数值区间划分,和时间窗口的逻辑同源,但只适用于能做区间划分的数值类型;
- 若强行用非数值列(比如字符串)执行SAMPLE BY,会直接触发语法错误;
- 虽然支持这种用法,但SAMPLE BY原本是为时间序列数据的时间窗口聚合设计的,非时间列的使用场景相对有限,适合需要按数值段分组统计的场景。
内容的提问来源于stack exchange,提问作者Bolek Ziobrowski
相关产品推荐
相关产品推荐

