如何在bigquery中按月/年汇总
Posted
技术标签:
【中文标题】如何在bigquery中按月/年汇总【英文标题】:how to aggregate by month/year in 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 !!! 好的。按月份和年份分组时如何获取月份和年份? 在我的回答中看到 - 我刚刚添加了它 - 抱歉,我认为这很明显,所以我最初跳过显示整个查询 【参考方案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)
【讨论】:
以上是关于如何在bigquery中按月/年汇总的主要内容,如果未能解决你的问题,请参考以下文章