【发布时间】:2021-03-12 09:54:23
【问题描述】:
一些聚合查询返回空值,有没有办法处理这个问题?
select time, avg(temp_f) from sensor_data sample by 1h
如果缺少某些记录,是否可以将聚合设置为 null 以外的值?
【问题讨论】:
一些聚合查询返回空值,有没有办法处理这个问题?
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 keyword documentation,对于 coalesce(),请参阅 conditional functions documentation 页面。
【讨论】: