下面的 sql 在 sas 中有效,但在 AWS Athena 中无效。 我收到“EXPRESSION_NOT_AGGREGATE”错误消息。
我不想在结果中返回任何聚合表达式。 我该怎么办?
SELECT DISTINCT
VAR_A
,VAR_B
,VAR_C
FROM data_org
WHERE VAR_D in ('3', '8')
GROUP BY VAR_A
HAVING VAR_E = MAX(VAR_E)
一般来说,所有非聚合列都必须是
group by
子句的一部分。您不会(也不想)聚合任何内容,因此请删除该子句(以及 having
)并切换到 where
:
select distinct var_a, var_b, var_c
from data_org
where var_d in ('3', '8')
and var_e = (select max(var_e)
from data_org);
它可能在 sas 中工作,但如果要分组,普通 SQL 需要在查询的选择部分中使用一些聚合函数(MAX、MIN、AVG、SUM 等),并且任何不是聚合的内容都需要进行分组。
因此,您需要将一些聚合添加到 SELECT 部分,并确保 GROUP BY 包含不使用聚合的列:
SELECT DISTINCT
VAR_A
,VAR_B
,VAR_C
,MAX(VAR_F) --or something else
FROM data_org
WHERE VAR_D in ('3', '8')
GROUP BY VAR_A, VAR_B, VAR_C --include everything not having Aggregate function
HAVING VAR_E = MAX(VAR_E)