一些聚合查询返回空值,有没有办法处理这个?
select time, avg(temp_f) from sensor_data sample by 1h
如果缺少某些记录,是否可以将聚合设置为 null 以外的其他值?
如果您的数据集有时间间隔并且在一定时间内缺少整个记录,您可以使用FILL()
. 您可以选择填充策略,例如LINEAR
插值、PREV
使用前一个值填充,或者您可以指定常量。这将包括返回的响应中存在空白的新行:
SELECT time, avg(temp_f)
FROM sensor_data
SAMPLE BY 1h FILL(50);
如果您的数据集有一段时间内的记录,但发送的是传感器null
而不是值,您可以使用它coalesce()
来指定null
应如何处理。不返回新行,并为空值设置默认值:
SELECT time, coalesce(avg(temp_f), 50)
FROM sensor_data
SAMPLE BY 1h;
有关详细信息,请参阅FILL 关键字文档,对于 coalesce(),请参阅条件函数文档页面。