ここは、週と先週のグループ分けの試みです。私はエラーを理解していますが、1日ごとにグループ化すると最小値は各行の最小値になり、最小値にはなりません。ビッグクエリー(Rollquest)によるグループ分け
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このような寸法の各グループは2行のみ、合計1-7日間1と1を持っていること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 Serverを使用していますので、もうbigqueryにはありません。私はあなたの助けに感謝します! –