【问题标题】:how to aggregate by month/year in bigquery如何在bigquery中按月/年汇总
【发布时间】:2020-07-30 04:16:44
【问题描述】:

我需要按邮政编码、月、年计算记录和分组。我当前的sql:

select
Property_Zip
  , count(Distinct Listing_Tracking_ID)   LISTINGCOUNT
  , round(avg( Current_Listing_Price), 2) AVGPRICE
  , FORMAT_DATE('%m', Current_Original_Listing_Date) MONTH
  , FORMAT_DATE('%Y', Current_Original_Listing_Date) YEAR
from `PROJECT.DS.TABLE`
group by Property_Zip
  , FORMAT_DATE('%m', Current_Original_Listing_Date)
  , FORMAT_DATE('%Y', Current_Original_Listing_Date)

我的问题是,月份和年份的结果都是空值。我的问题是我在标准 SQL 中找不到 month() 函数。

我该怎么做? 谢谢!

#更新日期 1 试过这个:

select
Property_Zip
  , count(Distinct Listing_Tracking_ID)   LISTINGCOUNT
  , round(avg( Current_Listing_Price), 2) AVGPRICE
  , EXTRACT(MONTH FROM Current_Original_Listing_Date) MONTH
  , EXTRACT(YEAR FROM Current_Original_Listing_Date) YEAR
from `mother-216719.VALUATION.MLS`
group by Property_Zip, DATE_TRUNC(Current_Original_Listing_Date, MONTH)

错误:SELECT 列表表达式引用了 Current_Original_Listing_Date 列,该列在 [5:24] 既不分组也不聚合

【问题讨论】:

  • 你不能在一个 /same 查询中结合我的答案中的不同方法 - 你使用 EXTRACT 或 DATE_TRUNC !!!
  • 好的。按月份和年份分组时如何获取月份和年份?
  • 在我的回答中看到 - 我刚刚添加了它 - 抱歉,我认为这很明显,所以我最初跳过显示整个查询

标签: google-bigquery


【解决方案1】:

您应该使用 EXTRACT 函数(假设 Current_Original_Listing_Date 字段是 DATE 数据类型

EXTRACT(MONTH FROM Current_Original_Listing_Date)    

EXTRACT(YEAR FROM Current_Original_Listing_Date)    

所以,您的查询可能看起来像

select
  Property_Zip
  , count(Distinct Listing_Tracking_ID)   LISTINGCOUNT
  , round(avg( Current_Listing_Price), 2) AVGPRICE
  , EXTRACT(MONTH FROM Current_Original_Listing_Date) MONTH
  , EXTRACT(YEAR FROM Current_Original_Listing_Date) YEAR
from `PROJECT.DS.TABLE`
group by Property_Zip
  , EXTRACT(MONTH FROM Current_Original_Listing_Date)
  , EXTRACT(YEAR FROM Current_Original_Listing_Date)

作为替代方案 - 您可以使用 DATE_TRUNC 函数将日期字段截断为 MONTH - DATE_TRUNC(Current_Original_Listing_Date, MONTH) - 在这种情况下,您只需按一个字段分组

在这种情况下是

select
  Property_Zip
  , count(Distinct Listing_Tracking_ID)   LISTINGCOUNT
  , round(avg( Current_Listing_Price), 2) AVGPRICE
  , DATE_TRUNC(Current_Original_Listing_Date, MONTH) YEAR_MONTH
from `PROJECT.DS.TABLE`
group by Property_Zip,
  DATE_TRUNC(Current_Original_Listing_Date, MONTH)

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2018-09-05
    • 2023-01-16
    相关资源
    最近更新 更多