2017-07-26 39 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

这不会返回您请求的输出结果 –