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

我有一个SQL表,其中保存了一条记录,其中包含一个
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