AWS Athena CAST 与 GROUP BY

AWS Athena CAST with GROUP BY

我在 Athena AWS 中有一个带有时间戳字段的 table。我想按日期对它们进行分组。我的 SQL 查询是:

SELECT CAST(createdat AS DATE) FROM conversations GROUP BY createdat 但我的结果如下:

如您所见,group by 不起作用,原因是新 table 的名称字段 _col0 而不是 createdat。 我也试过: SELECT CAST(createdat AS DATE) FROM conversations GROUP BY _col0 但我遇到了错误。

有人有什么建议吗?我会感激的

尝试在

组中使用 then same
SELECT CAST(createdat AS DATE) 
FROM conversations 
GROUP BY CAST(createdat AS DATE)

相同但更短

SELECT CAST(createdat AS DATE) 
FROM conversations 
GROUP BY 1;

我知道这个问题很老了,但我想首先回答它失败的原因。

Athena 遵循相同的标准 ANSI SQL 约定,该约定定义了处理 SQL 查询的标准。下面是处理顺序

  1. FROM 子句
  2. WHERE 子句
  3. GROUP BY 子句
  4. HAVING 子句
  5. SELECT 子句
  6. ORDER BY 子句

从上面,我们可以看到 GROUP BY 子句在 SELECT 子句之前处理,因此在评估 GROUP BY 子句时别名是未知的。

任何其他两个答案,即列号(AFAIK 它从 1 开始)或完整功能 CAST(createdat AS DATE) 都可以。

SELECT CAST(createdat AS DATE) 
FROM conversations 
GROUP BY 1;

SELECT CAST(createdat AS DATE) 
FROM conversations 
GROUP BY CAST(createdat AS DATE);