SQL:联接两个表时获得“滚动”平均值

时间:2018-12-24 16:19:53

标签: sql

我有两个时间序列表:TS_A和TS_B。

TS_A看起来像这样(标题和2个示例行):

year,month,value
2017,1,10
2017,2,20
2017,3,30

TS_B看起来像这样(标题和2个示例行):

year,month,label
2017,3,A
2017,4,B

我想将两个表合并到一个结果集中,这样我就可以从TS_A获得最近12个月的平均value(如果有的话,请使用可用的月份)。 TS_A上年和月组合的计数。

因此,例如,在上述表格中,这就是结果集:

year,month,avg,label
2017,3,A,15
2017,4,B,25

关于如何编写此查询的任何想法?

2 个答案:

答案 0 :(得分:0)

好吧,您可以使用相关子查询:

select b.*,
       (select sum(a.value)
        from a
        where a.year * 12 + a.month >= b.year * 12 + b.month - 11 and
              a.year * 12 + a.month <= b.year * 12 + b.month
from b;

答案 1 :(得分:0)

以下是用于BigQuery标准SQL

Location         
--------         
35.1868,-106.6652
42.3688,-83.4799 
40.3926,-79.9052 
40.5124,-88.9883 
38.5352,-90.0006

如果要应用于您示例中的数据-结果将为

"Location"
"35.1868,-106.6652"
"42.3688,-83.4799"
"40.3926,-79.9052"
"40.5124,-88.9883"
"38.5352,-90.0006"