我尝试从另一列(column_18
)的平均值中减去列(avg(column_19)
)中的值,并将此结果作为<的第三列(result
)获取表> strong>每行:
cur.execute("Select avg(column_19) - column_18 as result FROM test1")
这似乎不太好用,我收到了这个错误:
impala.error.HiveServer2Error: AnalysisException: select list expression not produced by aggregation output (missing from GROUP BY clause?): SUM(column_19) / COUNT(column_19) - column_18
我不希望将结果分组
答案 0 :(得分:1)
avg()
是aggregate function,这意味着它应用于一组行,可以使用GROUP BY
子句指定(如果未指定,则为所有行) 。聚合表达式的输出是每个组的单个值,因此不会根据需要对每行应用它。
但是,您可以通过几种方式完成您尝试做的事情。我认为最简单的方法是使用avg()作为analytic function。例如,您可以执行以下操作:
select column_19, column_18, (avg(column_19) over () - column_18) as result from test1
有关聚合和分析功能如何工作的更多详细信息,请参阅文档。