我在Hive表中有以下列。所有列都是数据类型string
。每行是不同的,因为另一列(7或8个列)值中至少有一个唯一值。我想写一个Hive查询来选择datetime >= 2017-05
的记录并删除datetime < 2017-05
所在的记录。此处的输出应为orderid
- 101, 102, 103
的行。应删除orderid
100
的所有记录。注意:Orderid 100有1条记录,日期时间&gt; 2017-05。仍然应该删除,因为它至少有1个记录,日期时间&lt; 2017-05。 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 :(得分:0)
select *
from (select *
,min(datetime) over (partition by orderid) as min_datetime
from mytable
) t
where min_datetime >= '2017-05'
;
答案 1 :(得分:0)
选择* from(select min(datetime)as date_time,orderid from mytable group by orderid)t 其中date_time&gt; =&#39; 2017-05%&#39;;