AWS Athena SQL根据一个列和一个静态值添加date_diff列

时间:2018-06-28 18:32:51

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

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

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

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

  

“ SYNTAX_ERROR:第1:8行:'“ timeseries”。“ grouttake”'必须为   聚合表达式或出现在GROUP BY子句中

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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

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