【问题标题】:Hive Date Comparison蜂巢日期比较
【发布时间】:2017-07-28 06:15:00
【问题描述】:

我在 Hive 表中有以下列。所有列的数据类型均为string。每一行都是不同的,因为其他列(7 或 8 列)值中至少有一个唯一值。我想编写一个 Hive 查询来选择 datetime >= 2017-05 所在的记录并删除 datetime < 2017-05 所在的记录。这里的输出应该是带有orderid - 101, 102, 103 的行。应删除所有带有orderid 100 的记录。注意:Orderid 100 有 1 条记录,日期时间 > 2017-05。仍然应该删除它,因为它至少有 1 条日期时间

有人可以为此编写一个配置单元查询吗?提前致谢。

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

【问题讨论】:

    标签: hive


    【解决方案1】:
    select  *
    
    from   (select  *
                   ,min(datetime) over (partition by  orderid) as min_datetime  
    
            from    mytable
            ) t
    
    where   min_datetime >= '2017-05'
    ;
    

    【讨论】:

    • 谢谢,嘟嘟马克。
    • 嗨 Dudu,由于某些原因,我没有从您的查询中得到正确的结果...所以我修改并得到了正确的结果...我发布了修改后的查询...谢谢。
    【解决方案2】:

    选择 * from (select min(datetime) as date_time, orderid from mytable group by orderid)t 其中 date_time>='2017-05%';

    【讨论】:

    • 这无法返回您请求的输出结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2021-09-17
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多