如何过滤 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

A​​thena 似乎无法识别 as 列名称。我怎样才能让它发挥作用?它使用不同的语法吗?

流程逻辑上是这样的(执行引擎可以自由选择不同的执行策略):

  1. WHERE 已应用(如果有的话;当然,在您的情况下没有 WHERE
  2. GROUP BY 计算聚合
  3. HAVING 应用于聚合值——在这里您可以引用聚合(例如 count(*))和 GROUP BY 列(例如 name 在您的情况下)
  4. SELECT 赋值被应用(从现在开始 c 被认为是 count(*)
  5. ORDER BY 被应用,因此它可以使用 c
  6. LIMIT 已应用

另见 How does Group by and Having works and Presto documentation for SELECT