如何在 presto SQL 中按月分组

Posted

技术标签:

【中文标题】如何在 presto SQL 中按月分组【英文标题】:How to group by month in 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 - 这显然是多余的)。无论如何,我之前评论的第一部分是您在问题中发布的错误的根源 - 修复它。 【参考方案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

【讨论】:

以上是关于如何在 presto SQL 中按月分组的主要内容,如果未能解决你的问题,请参考以下文章