如何在 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 中按月分组的主要内容,如果未能解决你的问题,请参考以下文章

mysql 如何按月分组查询出当前年度每个月的短信数量(数据库中这个月要是为空的话就用0条怎么显示出来)

如何在bigquery中按月/年汇总

LINQ:在日期时间字段中按月和年分组

WordPress 查询:按年份 DESC 对帖子进行分组,然后在每个组中按月 ASC 发布帖子

在 Hive 和 Presto 中按分组聚合字符串并按顺序排序

如何在presto elasticsearch中按子句pushdpown order