2016-12-23 4 views
0

月に商品を購入したメンバーを表すこのような表があります。月は201501から201612です。 2つの列を含む新しい表を取得したいとします.1つは201501から201612までの月で、もう1つはmember_rollingとしてのカウントです(別のmember_srl)その月の記録 たとえば、新しいテーブルの1レコードは "201605 123456"、123456は月> = '201505'、月は< '201605'の条件の数(distinct member_srl)です。 これを簡単な方法で迅速に実現する方法は?Hiveのウィンドウごとに異なるメンバーを数えるには?

member_srl month 
21197731 201501 
14353419 201509 
42129336 201605 
10599714 201611 
16162595 201501 
50487249 201601 
14899586 201604 
29611434 201607 
15374407 201608 
14479686 201501 
1621671  201502 
20814896 201512 
8185190  201501 
57833156 201601 
5215620  201503 
60407250 201602 
3510594  201501 
25221577 201611 
2120126  201512 

答えて

0

テーブル自体を結合する必要があります。
希望の12ヶ月の範囲で月の列に参加してください。
次に、関連する列で集計を行います。この例では
SELECT t1.id AS id, COUNT(DISTINCT t2.member_srl) AS member_srl_distinct_count FROM test t1 JOIN test t2 ON t1.id= t2.id OR t1.id=(t2.id-1) OR t1.id=(t2.id-2) ... GROUP BY t1.id;

あなたが/ substractヶ月を追加できるようにするために、これまでにあなたの月の列をキャストする必要がありますので、私は、あなたの月のコラムとしてINT列(ID)を使用しますよう
何かそれまで

関連する問題