SQL查询中的日期组范围
我有一个SQL表,其中保存了一条记录,其中包含一个SQL查询中的日期组范围,sql,date,google-bigquery,partition-by,Sql,Date,Google Bigquery,Partition By,我有一个SQL表,其中保存了一条记录,其中包含一个DATE字段,格式为yyyy-mm-dd。我试图计算表中由月份范围定义的分区的平均值,也就是说,我想在下一年的8月到7月之间按日期窗口对行进行分组,然后计算每个分区中一个字段的平均值 我如何自动执行此操作,而不是使用 在('1995-08-01'和'1996-07-31'或'1996-08-01'和'1997-07-31'之间的哪一天)等等,因为数据可以无限增长 表中的示例数据 div date homete
DATE
字段,格式为yyyy-mm-dd
。我试图计算表中由月份范围定义的分区的平均值,也就是说,我想在下一年的8月到7月之间按日期窗口对行进行分组,然后计算每个分区中一个字段的平均值
我如何自动执行此操作,而不是使用在('1995-08-01'和'1996-07-31'或'1996-08-01'和'1997-07-31'之间的哪一天)
等等,因为数据可以无限增长 表中的示例数据
div date hometeam awayteam fthg ftag
E0 2017-04-17 00:00:00.000 Middlesbrough Arsenal 1 2
E0 2017-04-16 00:00:00.000 Man United Chelsea 2 0
E0 2017-04-16 00:00:00.000 West Brom Liverpool 0 1
E0 2017-04-15 00:00:00.000 Crystal Palace Leicester 2 2
E0 2017-04-15 00:00:00.000 Everton Burnley 3 1
我想按足球赛季而不是年份对比赛进行分组。您可以将日期移到新年,然后从该日期提取年份
SELECT EXTRACT(year from DATE_ADD(CAST(dt AS date), interval 5 month)) as season
为了更好地理解它,我准备了一个逐步查询
SELECT dt,
DATE_ADD(CAST(dt AS date), interval 5 month) as shifted_dt,
EXTRACT(year from DATE_ADD(CAST(dt AS date), interval 5 month)) as season
FROM UNNEST(['1995-08-01', '1996-07-31', '2017-04-16', '1996-08-01', '1997-07-31']) as dt
您能提供表格中的样本数据吗?补充,抱歉@SabriKaragönen