使用CnosDB的date_trunc与increase函数报错,求解决方案
解决CnosDB中date_trunc与increase函数的分组查询报错
错误原因
你的SQL违反了分组查询的核心规则:SELECT子句中的非聚合列必须出现在GROUP BY子句中,或被聚合函数包裹。具体问题:
date_trunc('minute', time)是基于原始time列生成的时间桶,既未加入GROUP BY,也不是聚合函数,数据库无法确定如何将其与分组结果关联- 调用
increase时显式引用了原始time列,而分组后该列不属于分组维度,导致解析失败
修正后的SQL
select tenant, database, date_trunc('minute', time) time_bucket, increase(value) addition, node_id from http_data_out where time >= (now() - INTERVAL '120 minutes') group by tenant, database, node_id, date_trunc('minute', time);
关键调整说明
- 添加时间桶到GROUP BY:将
date_trunc('minute', time)加入分组条件,确保SELECT中的非聚合列都属于分组维度 - 简化increase函数调用:CnosDB的
increase作为时序聚合函数,默认会按时间主键(time列)排序计算增量,无需显式指定order by time - 补全时间间隔单位:原语句中
INTERVAL '120'缺少单位,补充minutes避免解析歧义
内容的提问来源于stack exchange,提问作者bfr
相关产品推荐
相关产品推荐

