我需要计算记录并按邮政编码,月份,年份分组。我当前的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()函数。
我该怎么做? 谢谢!
#UPdate 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]聚集
答案 0 :(得分:0)
您应该使用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)