2017-07-26 38 views
0

我在Hive表中有以下列。所有列都是數據類型string。每行都是不同的,因爲其他列(7或8列)值至少有一個唯一值。我想寫一個Hive查詢來選擇datetime >= 2017-05的記錄,並在其中刪除記錄datetime < 2017-05。這裏的輸出應該是orderid - 101, 102, 103。應刪除所有帶有orderid100的記錄。注意:Orderid 100有1條記錄,日期時間> 2017-05。仍然應該放棄,因爲它有至少1記錄與datetime <更新。 Orderid可以是任何12-16位數字。該表有數十億條記錄。配置單元日期比較

有人可以幫忙寫一個配置單元查詢嗎?提前致謝。

datetime   orderid  other columns 
2017-04-30 17:10:05 100 
2017-03-05 12:25:30 100 
2017-05-09 08:18:44 100 
2017-05-15 04:21:43 101 
2017-06-20 11:20:10 101 
2017-05-22 05:09:35 102 
2017-07-01 06:25:30 102 
2017-06-25 08:24:40 103 
2017-05-11 11:50:49 103 

輸出結果:

datetime   orderid  other columns 

2017-05-15 04:21:43 101 
2017-06-20 11:20:10 101 
2017-05-22 05:09:35 102 
2017-07-01 06:25:30 102 
2017-06-25 08:24:40 103 
2017-05-11 11:50:49 103 

回答

0
select * 

from (select * 
       ,min(datetime) over (partition by orderid) as min_datetime 

     from mytable 
     ) t 

where min_datetime >= '2017-05' 
; 
+0

謝謝Dudu Mark。 – Murali

+0

Hi Dudu,由於某些原因,我沒有從您的查詢中獲得正確的結果...所以我修改並獲得了正確的結果...我發佈了修改後的查詢...謝謝。 – Murali

0

SELECT * 從(SELECT MIN(日期時間),爲DATE_TIME,訂單ID從通過的OrderID MYTABLE組)噸 其中DATE_TIME> ='2017-05 %';

+0

這不會返回您請求的輸出結果 –