【问题标题】:AWS Athena SQL add date_diff column based on one column and a static valueAWS Athena SQL 基于一列和一个静态值添加 date_diff 列
【发布时间】:2018-06-30 03:04:41
【问题描述】:

我正在尝试运行以下查询:

select date_diff('second',timeseries.timestampminute,max(timeseries.timestampminute)),
as elapsed_sec,
timeseries.grouttake
from timeseries

因为我希望经过的时间是表中最高日期时间值与表中每一行之间的时间,但我一直遇到错误:

"SYNTAX_ERROR: line 1:8: '"timeseries"."grouttake"' 必须是 聚合表达式或出现在 GROUP BY 子句中"

有什么想法吗?

【问题讨论】:

  • 我认为查询中有错误。 elapsed_sec 之前有逗号。您还可以提供时间序列的示例行吗?

标签: sql amazon-web-services amazon-athena presto


【解决方案1】:

由于max 是一个聚合,但您的 select 对每一行都进行了操作,因此两个语句不能在同一行上下文中执行。

您需要做的是计算一个查询中的最大值,然后与不同上下文中的每一行进行比较。这可以通过连接在一个选择中完成。

select 
date_diff('second',
          timeseries.timestampminute,
          max_query.maxts) as elapsed_sec
from timeseries
cross join (select max(timeseries.timestampminute) maxts 
            from timeseries) 
         as max_query

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 1970-01-01
    • 2021-12-02
    • 2019-08-06
    • 1970-01-01
    • 2021-07-20
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多