【问题标题】:how can I use function SUM() inside of SUM function in Presto SQL?如何在 Presto SQL 的 SUM 函数中使用函数 SUM()?
【发布时间】:2019-09-01 06:05:21
【问题描述】:

我试图通过以下逻辑获得两个数字的总和: x = y + j 基于这个逻辑,我使用 SUM() 函数编写了 presto 查询以获得 x 和 y 的 SUM,但我得到了 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))]

【问题讨论】:

  • 根据 SQL 文档,您似乎无法在 Sum 内使用 Sum。相反,请尝试SUM(SELECT FIELD_1, FIELD_2 from TABLE_1, TABLE_2) 之类的东西。然后你可以一次拉回你想要总结的列

标签: presto


【解决方案1】:

我不确定我是否理解您要执行的操作,但我认为以下更改可能会有所帮助:

  • CASE WHEN 中使用IN 语句:source in ('x', 'y')
  • 使用IF 代替CASEif(source in ('x', 'y'), num_tasks, 0)
  • 相信您只需要打一个SUM 电话。

把这一切放在一起:

SELECT SUM(if(source in ('x', 'y'), num_tasks, 0))

或者,您可以使用 SUMFILTER 语法:

SELECT SUM(num_tasks) filter (where source in ('x', 'y'))

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多