Как я могу использовать функцию SUM () внутри функции SUM в Presto SQL? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь получить SUM из двух чисел, используя следующую логику: x = y + j, основываясь на этой логике. Я написал запрос preto, используя функцию SUM (), чтобы получить 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

Уведомление об ошибке Запрос Presto не выполнен.Ошибка: SYNTAX_ERROR: Невозможно вложить агрегаты в агрегат 'sum': ["sum" ((CASE WHEN (source = 'y') THEN count ELSE 0 END)), "sum" ((CASE WHEN (source = 'x')THEN num_tasks ELSE 0 END))]

1 Ответ

2 голосов
/ 10 апреля 2019

Я не уверен, что понимаю, что вы пытаетесь сделать, но я думаю, что могут помочь следующие изменения:

  • Используйте оператор 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'))
...