【问题标题】:How to group by month in presto SQL如何在 presto SQL 中按月分组
【发布时间】:2021-12-05 05:53:44
【问题描述】:

我正在尝试在 Presto SQL 中按月分组。 我试过这个:

select
    date_trunc('month', CAST(date AS date)) date_month,
    sum(gross_revenue,0) AS 'monthly_net_revenue'
    from gross_revenue_calculator
    group by date_trunc('month', date)

这给了我以下错误: Malformed query: line 61:27: mismatched input ''monthly_net_revenue''. Expecting: <identifier>

预期输出:

October:  $102.12
November: $90.12

【问题讨论】:

  • 删除引号字符:AS monthly_net_revenue。并使用GROUP BY date_month
  • 没用:现在说:FAILED: Presto error: COLUMN_NOT_FOUND: line 19:10: Column 'date_month' cannot be resolved
  • 这是 presto 错误/问题 - SQL 语法允许引用 GROUP BY 中的输出列...如果这在 presto 中是不可能的,那么在 GROUP BY 中使用一个与输出表达式字面匹配的表达式(删除 CAST - 这显然是多余的)。无论如何,我之前评论的第一部分是您在问题中发布的错误的根源 - 修复它。

标签: sql postgresql presto


【解决方案1】:

您不应该使用单引号作为列名,无论是单引号还是双引号,您也可以像在 WITH 子句中那样在 GROUP BY 中按索引引用列:

select
    date_trunc('month', CAST(date AS date)) date_month,
    sum(gross_revenue,0) AS monthly_net_revenue
from gross_revenue_calculator
group by 1

【讨论】:

    猜你喜欢
    • 2019-12-18
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2014-01-30
    • 2011-07-21
    • 2021-10-20
    • 1970-01-01
    相关资源
    最近更新 更多