TDengine 3.2.0 升级到 3.3.6 后 CASE 表达式报错

【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);

问题

  1. 这是 3.3.6 的新限制吗? CASE 表达式在 INTERVAL 聚合中不能返回字段值?
  2. 有没有替代方案? 如何在 3.3.6 中实现相同的功能(计算错误率 = 错误值之和 / 总值之和)?
  3. 是否有其他关键字或语法 可以替代 CASE 表达式来达到相同目的?

希望了解:

  • 这是否是预期的行为变更?
  • 是否有文档说明这个变更?
  • 是否有其他 SQL 语法可以在单次查询中实现相同功能?

【资源配置】

【报错完整截图】

case when的结果类型有变化,把case when cast 成需要的类型就可以了