2017-11-08 11 views
1

私はBigQueryを扱っており、変換に達するまでユーザーが過去の動作を確認したいと考えています(result=1)。SQL:特定のアクション/条件/イベントがトリガーされるまでのみ行を結合する方法

ここでは、ユーザーの表の例を示します。私はまた、すべてのユーザーのためにそれを抽象化したいと思います。 visitIdは、それぞれfullVisitorIdに対して一意です。効果的

#t1 
fullVisitorId visitId visitNumber  page_views  result  
1    1214  4    11    0 
1    112  5    9    0 
1    1014  6    10    1 
1    1511  7    10    0 
1    1614  8    10    1 

、私は事実を私たちに残して、クエリが最初の変換後のすべての行を削除する:

#t2 
fullVisitorId visitId visitNumber  page_views  result  
1    1214  4    11    0 
1    112  5    9    0 
1    1014  6    10    1 

何の変換はそのfullVisitorIdのために存在しない場合は、すべての行を保持します。私は、1行にこれを集約するには、以下のSQLを使用することができます。

SELECT fullVisitorId, 
MAX(visitNumber)-MIN(visitNumber) AS number_visits, 
SUM(page_views)/number_visits AS pages_per_s, 
FROM t2 
GROUP BY fullVisitorId 

これは私が欲しいものを私を与えるだろう。

#t3_visitor_past 
fullVisitorId number_visits  pages_per_s  
1    3     10 

私は別のfullVisitorId年代の任意の番号を持っていると思いますのでご注意ください。

答えて

1

私は、次の手順を実行して解決策を見つけた:

  1. は、上記の表から、result=1コールこのt4
  2. は、最初のイベントのリストを取得するにはSELECT fullVisitorId, visitId, MIN(visitNumber) FROM t4を実行するすべての行がt5
  3. この表を呼び出す検索
  4. 内部結合でください:NONコンバージョンのためのSELECT * FROM t1 INNER JOIN t5 ON t1.fullVisitorId = t5.fullVisitorId AND t1.visitNumber <= t5.visitNumber

同じ手順をユーザーを傷つけました。

関連する問題