2016-09-04 9 views
0

私はイベントのセットを含むテーブルがあります。イベントは、検索、クリック、オープンなどが可能です。各行に関連付けられた日付列があります。前と次の値のカウントを取得

最初のイベントが検索で、次のイベントがクリックされた行の数を取得しようとしています。赤方偏移で鉛/遅れを使ってこれを達成する方法はありますか?それは私に集約関数の呼び出しは、サブクエリを使用して、私はあなたのコードが動作するように期待される機能

count(CASE WHEN lead(trim(lower(event)), 1) 
        OVER (
        ORDER BY timevalue :: TIMESTAMP ASC) = 'click' AND trim(lower(event)) = 'search' 
    THEN 1 
     ELSE NULL END)    AS my_column, 
+1

ここには約3デシベルのエンジンがあります。どちらを保つべきですか? – Drew

+0

redshiftのみに更新されました – FirstName

答えて

0

を入れ子になっていないかもしれないというエラーがスローされます

。私はlower()trim()が必要であることを期待していない

select count(*) 
from (select t.*, 
      lead(event) over (order by timevalue) as next_event 
     from t 
    ) t 
where event = 'search' and next_event = 'click'; 

が、あなたのデータは本当に汚れている場合、彼らは次のようになりますように私はそれを記述します。

注:ウィンドウ関数を集計関数の引数として使用することはできないため、サブクエリを使用する必要があります。

関連する問題