以下是我按滾動周和上週進行分組的次數。我明白錯誤,但是當我每天分組時,最小值成爲每行的最小值,因此不是最小值。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)
編輯與下面的幫助,然後一些玩弄我設法擴大它多維度,然後篩選出結果使得每個組的尺寸只有兩行,一行總和爲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,
我試圖讓壓痕遵循標準慣例的Window functions
window-frame-clause
部分,但它可能不是100%正確的。你能檢查它嗎? –我會的,但我的新工作使用oracle和sql服務器,所以不再在bigquery上。我感謝您的幫助! –