Как включить диапазон в раздел в Big Query - PullRequest
0 голосов
/ 31 марта 2020

Мне нужно найти среднее и стандартное значение цены продукта в bigquery.

Итак, я делаю

avg(price) over (partition by model,year)
stddev(price) over (partition by model,year)

(где год - год постройки)

, что я хотел бы сделать (не присоединяясь к таблице, если это возможно):

avg(price) over (partition by model,year±1)
stddev(price) over (partition by model,year±1) 

за год, включаемый за год до и после.

заранее спасибо,

1 Ответ

0 голосов
/ 01 апреля 2020

Секрет ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING в предложении OVER():

WITH data AS (
  SELECT *
  FROM UNNEST([STRUCT(2010 AS year, 'x' AS model, 2 AS price), (2011, 'x', 4), (2012, 'x', 8), (2013, 'x', 16), (2015, 'x', 32)])
)

SELECT *
  , AVG(price) OVER(PARTITION BY model ORDER BY year ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) avg
  , STDDEV(price) OVER(PARTITION BY model ORDER BY year ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) stddev
FROM data

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...