如何过滤 Athena (Presto) 中的聚合值?
How to filter on aggregation value in Athena (Presto)?
我不能 运行 一个简单的 sql select 和 Athena 控制台的 where 条件。详情如下:
SELECT name, count(*) AS c
FROM target_reddit_movie
GROUP BY name
HAVING c > 1
ORDER BY c DESC
LIMIT 10
我收到一个错误 SYNTAX_ERROR: line 1:74: Column 'c' cannot be resolved
。
Athena 似乎无法识别 as
列名称。我怎样才能让它发挥作用?它使用不同的语法吗?
流程逻辑上是这样的(执行引擎可以自由选择不同的执行策略):
WHERE
已应用(如果有的话;当然,在您的情况下没有 WHERE
)
GROUP BY
计算聚合
HAVING
应用于聚合值——在这里您可以引用聚合(例如 count(*)
)和 GROUP BY
列(例如 name
在您的情况下)
SELECT
赋值被应用(从现在开始 c
被认为是 count(*)
)
ORDER BY
被应用,因此它可以使用 c
LIMIT
已应用
另见 How does Group by and Having works and Presto documentation for SELECT
我不能 运行 一个简单的 sql select 和 Athena 控制台的 where 条件。详情如下:
SELECT name, count(*) AS c
FROM target_reddit_movie
GROUP BY name
HAVING c > 1
ORDER BY c DESC
LIMIT 10
我收到一个错误 SYNTAX_ERROR: line 1:74: Column 'c' cannot be resolved
。
Athena 似乎无法识别 as
列名称。我怎样才能让它发挥作用?它使用不同的语法吗?
流程逻辑上是这样的(执行引擎可以自由选择不同的执行策略):
WHERE
已应用(如果有的话;当然,在您的情况下没有WHERE
)GROUP BY
计算聚合HAVING
应用于聚合值——在这里您可以引用聚合(例如count(*)
)和GROUP BY
列(例如name
在您的情况下)SELECT
赋值被应用(从现在开始c
被认为是count(*)
)ORDER BY
被应用,因此它可以使用c
LIMIT
已应用
另见 How does Group by and Having works and Presto documentation for SELECT