AWS Athena SQL добавляет столбец date_diff на основе одного столбца и статического значения - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь выполнить следующий запрос:

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 голосов
/ 29 июня 2018

Поскольку 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
...