Вот моя попытка сгруппировать по прокатной неделе и на прошлой неделе. Я понимаю ошибку, но когда я группируюсь по дням, минимум становится минимумом каждой строки и, следовательно, не является минимальным набором.Bigquery Группировка по дням проката
Должен быть простой способ группировки дней в Bigquery.
select
n_rtb_impressions,
if(dayy between min(dayy) and (min(dayy) + 6) ,1, 0) as D
from
(SELECT
((dayofyear(datetime))) as dayy,
sum(IF(c_priority IN (19,20,21), IFNULL(s_impressions,0)-IFNULL(hybrid_p_back,0), 0)) AS n_rtb_impressions,
FROM
TABLE_DATE_RANGE(hourly_stats.v1_,DATE_ADD(CURRENT_DATE(),-14,"day"),DATE_ADD(CURRENT_DATE(),-1,"day"))
group by dayy)
EDIT с помощью ниже, а затем некоторые игры вокруг мне удалось расширить его для нескольких размеров, а затем отфильтровать результаты, так что каждая группа имеет размеры только два ряда, один за сумму 1-7 дней и один на 8-14 дней. Затем я использовал NTH для поворота данных, поэтому группировка теперь является размерностью. Я помещу его здесь для других:
select
server,
a_name,
w_name,
rtb_name,
NTH(1, last_7_days_n_rtb_impressions_1) This_week, NTH(2, last_7_days_n_rtb_impressions_1) Last_Week,
from(
select
[date],
dw,
server,
a_name,
w_name,
rtb_name,
last_7_days_n_rtb_impressions_1
from(
SELECT
[date],
dw,
SUM(n_rtb_impressions) OVER(ORDER BY rtb_name, server, a_name, w_name,[date]
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS last_7_days_n_rtb_impressions_1,
server,
a_name,
w_name,
rtb_name,
FROM (
SELECT
server,
a_name,
w_name,
rtb_name,
dayofweek(datetime) as dw,
DATE(datetime) AS [date],
SUM(IF(c_priority IN (19,20,21), IFNULL(s_impressions,0)-IFNULL(hybrid_p_back,0), 0)) AS n_rtb_impressions,
FROM TABLE_DATE_RANGE(hourly_stats.v1_,DATE_ADD(CURRENT_DATE(),-14,"day"),
DATE_ADD(CURRENT_DATE(),-1,"day"))
GROUP BY [date],dw,server,
a_name,
w_name,
rtb_name,
order by rtb_name,server, a_name,w_name, [date])
order by rtb_name,server, a_name,w_name,)
where dw = dayofweek(DATE_ADD(CURRENT_DATE(),-1,"day"))
order by rtb_name,server, a_name,w_name, [date])
group by
server,
a_name,
w_name,
rtb_name,
Я попытался сделать отступы следовать стандартным соглашениям, но он не может быть на 100% правильным. Вы можете проверить это? –
Я бы хотел, но моя новая работа использует оракул и sql-сервер, поэтому больше нет на bigquery. Я ценю вашу помощь! –