Я пытаюсь получить СУММУ двух чисел, следуя следующей логике: х = у + j основываясь на этой логике, я написал предварительный запрос, используя функцию SUM(), чтобы получить СУММУ x и y, но я получил синтаксическую ошибку Presto
SELECT
SUM(sum(CASE
WHEN source = 'x' THEN num_tasks
ELSE 0
END) + sum(CASE WHEN source = 'y' THEN num_tasks ELSE 0 END)) as total
Уведомление об ошибке Не удалось выполнить предварительный запрос. Ошибка: SYNTAX_ERROR: Невозможно вложить агрегаты внутри агрегата "сумма": ["сумма"((СЛУЧАЙ, КОГДА (источник = 'y'), ТОГДА подсчет ЕЩЕ 0 КОНЕЦ)), "сумма" ((СЛУЧАЙ, КОГДА (источник = 'x') THEN num_tasks ELSE 0 END))]
Я не уверен, что понимаю, что вы пытаетесь сделать, но я думаю, что следующие изменения могут помочь:
IN
в CASE WHEN
: source in ('x', 'y')
IF
вместо CASE
: if (source in ('x', 'y'), num_tasks, 0)
SUM
.Соединяем все это вместе:
SELECT SUM(if (source in ('x', 'y'), num_tasks, 0))
Кроме того, вы можете использовать синтаксис SUM
с FILTER
:
SELECT SUM(num_tasks) filter (where source in ('x', 'y'))
Похоже, вы не можете использовать
Sum
внутриSum
так, как хотите, согласно документации SQL. Вместо этого попробуйте что-то вродеSUM(SELECT FIELD_1, FIELD_2 from TABLE_1, TABLE_2)
. Затем вы можете отодвинуть столбцы, которые вы хотите суммировать, все сразу.