GridDB执行TQL聚合查询时出现“未授权列操作”错误的原因及解决方法咨询
GridDB执行TQL聚合查询时出现“未授权列操作”错误的原因及解决方法咨询
嗨,我来帮你拆解这个问题!
你遇到的[Server]: 60100 (Unauthorized column operation)错误,本质是GridDB的TQL语法限制——它不允许在聚合函数(比如sum())内部直接对两个列进行算术运算。也就是说,sum(retweets + favorites)这种把列计算嵌套在聚合函数里的写法,GridDB的查询解析器是不支持的。
不过别担心,有两种简单的解决办法:
方法一:先计算单条记录的互动量,再聚合求和
先通过子查询算出每一条推文的retweets + favorites,再对这个结果按小时求和,写法如下:
SELECT hour, sum(per_row_engagement) as engagement FROM ( SELECT date_trunc('hour', created_at) as hour, retweets + favorites as per_row_engagement FROM tweets WHERE created_at >= '2022-01-01' ) AS hourly_tweets GROUP BY hour ORDER BY hour;
方法二:利用加法分配律,分开聚合后再相加
从数学逻辑上来说,sum(a + b)完全等价于sum(a) + sum(b),而GridDB支持对单个列分别聚合后再做运算,这种写法更简洁:
SELECT date_trunc('hour', created_at) as hour, sum(retweets) + sum(favorites) as engagement FROM tweets WHERE created_at >= '2022-01-01' GROUP BY hour ORDER BY hour;
推荐用第二种方法,不仅代码更短,执行效率也可能更高,因为不需要额外的子查询步骤。
备注:内容来源于stack exchange,提问作者Ismail Vohra
相关产品推荐
相关产品推荐

