【TDengine 使用环境】生产环境
【TDengine 版本】3.3.6.12
【操作系统以及版本】CentOS Linux release 7.7.1908 (Core)
【部署方式】非容器部署
【集群节点数】3
【集群副本数】3
【描述业务影响】
直接使用sql进行错误率计算的方案失效了,grafana面板也无法同步进行查看
SELECT
_wstart,
SUM(CASE WHEN code <> ‘0’ THEN _value ELSE 0 END) / SUM(_value) as value,
clientVer,
clientType
FROM appdata.app_video_function
WHERE
_ts > 1770305144000
AND _ts < 1770312344000
PARTITION BY clientVer, clientType
INTERVAL(120m);
【问题复现路径/shan】版本升级
【遇到的问题:问题现象及影响】
升级 TDengine 从 3.2.0 到 3.3.6 后,原本正常运行的 SQL 查询报错。
举例:这个查询报错(简化)
SELECT
_wstart,
SUM(CASE WHEN code <> ‘0’ THEN _value ELSE 0 END) as error_sum
FROM appdata.app_video_function
WHERE _ts > NOW - 1h
PARTITION BY clientVer, clientType
INTERVAL(5m);
问题
- 这是 3.3.6 的新限制吗? CASE 表达式在 INTERVAL 聚合中不能返回字段值?
- 有没有替代方案? 如何在 3.3.6 中实现相同的功能(计算错误率 = 错误值之和 / 总值之和)?
- 是否有其他关键字或语法 可以替代 CASE 表达式来达到相同目的?
希望了解:
- 这是否是预期的行为变更?
- 是否有文档说明这个变更?
- 是否有其他 SQL 语法可以在单次查询中实现相同功能?
【资源配置】
【报错完整截图】

