2016-12-15 4 views
2

私はイベントテーブルとチケット(created date、person_id)テーブルを持っています。誰かがチケットを購入すると、チケットテーブル(Redshift)で行が作成されますRedshiftの実行回数

スナップショットテーブルを作成しようとしていますので、過去の任意の日に購入したチケットの数がわかります。

これまでのところ、私はこの

select 
    trunc(e.created), 
    count(person_id) over (order by trunc(e.created) rows unbounded preceding) as cumulative_signups 
from event e 
LEFT JOIN person_tickets t on e.id = t.event_id 

問題は、この私の代わりに、日ごとに1行の私はこれを取得意味サインアップごとに行を、与えることである。持っていますあなたがしたいように見える何

trunc  cumulative_signups 
2016-01-15 1 
2016-01-15 2 
2016-01-15 3 
2016-01-15 4 
2016-01-16 5 



trunc  cumulative_signups 
2016-01-15 4 
2016-01-16 5 

答えて

3

は、ウィンドウ機能を備えた集合体である:

select trunc(e.created), count(*) as day_count, 
     sum(count(*)) over (order by trunc(e.created) rows unbounded preceding) as cumulative_signups 
from event e left join 
    person_tickets t 
    on e.id = t.event_id 
group by trunc(e.created) 
order by trunc(e.created); 

赤方偏移、ある時点で(私はrows unbounded precedingsum()のために必要とされているとは思わないが、私はとにかくそれを左windowing節にはorder byが必要です)。

+0

ああ私はこれを試していましたが、失敗した最初の部分とは対照的に、合計でウィンドウ関数全体をラップしていました。どうもありがとう。 – Pythonn00b

+0

私はまた、ギャップを埋めることを望む - 今、チケットが売られていない日は見逃されます。今すぐRSで日付シリーズを生成し、それに参加して作業してください。 – Pythonn00b

+1

@ Pythonn00b 。 。コメントではなく、新しい質問を質問する必要があります。 –

関連する問題