2017-07-26 8 views
0

私はハイブテーブルに次の列を持っています。すべての列のデータ型はstringです。各行は、他の列(7列または8列以上)の値に少なくとも1つの一意の値があるため、区別されます。レコードを選択するためにHiveクエリを作成したい場合、datetime >= 2017-05とドロップレコードはdatetime < 2017-05です。ここでは、出力はorderid - 101, 102, 103の行である必要があります。 orderid100のすべてのレコードは削除する必要があります。注:Orderid 100には、datetime> 2017-05のレコードが1つあります。それでもdatetime < 2017-05と少なくとも1つのレコードがあるので、それを削除する必要があります。 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

こんにちはDudu、いくつかの理由で、私はあなたのクエリから正しい結果を得ていません...私は修正し、正しい結果を得ました...私は変更されたクエリを投稿...ありがとう。 – Murali

0

SELECT * FROM(DATE_TIMEとして、受注受注によってmytableはグループから選択分(日時))T DATE_TIME> = '2017から05から % ';

+0

要求された出力結果を返す方法はありません –