# #count #google-bigquery #rolling-computation
Вопрос:
У меня есть эти данные, я хочу сделать два скользящих подсчета:
- Подсчитайте по каждому (идентификатор,возврат средств) путем прокатки. Когда он превратится в другую комбинацию (идентификатор,возврат) (даже с одним и тем же идентификатором), он будет начинаться с 0
- Подсчитайте по каждому идентификатору путем прокрутки.
Я хочу, чтобы результат был следующим:
Можете ли вы помочь мне создать запрос? Я пробую это, но у меня ничего не получается…
SELECT
date,
id,
refund,
COUNT(CONCAT(id,refund)) OVER (PARTITION BY rn) AS count_id_refund,
COUNT(id) OVER (PARTITION BY rn) AS count_id
FROM table1
Ответ №1:
Вы можете использовать функцию row_number (). Вот мой запрос с некоторыми образцами данных
with sample as (
select 1 as id, TRUE as refund,
union all select 1, true
union all select 1, false
union all select 2,true
union all select 3,true
union all select 3, false
union all select 3, false
)
select id,refund,
row_number() over(partition by id order by id) as row_id,
row_number() over(partition by concat(id,refund) order by concat(id,refund)) as row_id_rf
from sample order by id,refund desc;
и в результате получается: