2017-06-11 25 views
0

ここでは私のサンプルデータテーブルはハイブ:複数の条件に基づいて、重複排除データ

row# date  customerid      event  itemid-A  Itemid-B 
1  5/1/17 4c9b3705121ac1493640912601   page load 473685 
2  5/1/17 11dacfc4251da01493672636536   page load 863438 
3  5/1/17 11dacfc4251da01493672636536   click  863438  45485 

ある条件#1:私は、行の#3との重複顧客ID以来、行#2のフォームにデータを削除する必要があります。基本的にページロードイベントを削除し、顧客IDが重複している場合はクリックイベントを維持します。クリックイベントはユニークなItemid-Bを持つ

条件2:重複するcustomeridがない場合は、ロー1にページロードイベントを保持する必要があります。

答えて

1
select dt,customerid,event,itemid_A,Itemid_B 

from (select * 
       ,row_number() over 
       (
        partition by customerid 
        order by  field(event,'click','page load') 
       ) as rn 

     from mytable 
     ) t 

where rn = 1 
; 

+------------+-----------------------------+-----------+----------+----------+ 
|  dt  |   customerid   | event | itemid_a | itemid_b | 
+------------+-----------------------------+-----------+----------+----------+ 
| 2017-05-01 | 11dacfc4251da01493672636536 | click  | 863,438 | 45,485 | 
| 2017-05-01 | 4c9b3705121ac1493640912601 | page load | 473,685 | (null) | 
+------------+-----------------------------+-----------+----------+----------+ 
関連する問題