Hive查询获取插入表中的最新记录。

3
 a                date             time         b
35573407        20170412        140930  310260453908912
35573407        20170412        140930  310260453908912
35573407        20170412        141054  310260453908912
35573407        20170412        025339  310260453908912
35573407        20170412        072918  310260453908912
35573407        20170412        091105  310260453908912
35573422        20170412        193605  310260453908912
35573407        20170412        121105  310260453908912
35573407        20170412        032439  310260453908912
35573407        20170412        032605  310260453908912

我将尝试解决一个hive查询问题,该查询可以获取带有b的表中最后插入的记录。记录需要按时间列排序并获取最后一条记录。例如在上述记录中。
35573422  20170412  193605  310260453908912

这是最后一条记录。

不使用日期/时间戳类型或至少使用ISO日期/时间戳格式是一种非常糟糕的做法(如果由于某些原因您正在使用非常旧的Hive版本)。 - David דודו Markovitz
1个回答

3
select  a,date,time,b

from   (select  *
               ,row_number() over 
                (
                    partition by    b
                    order by        date desc
                                   ,time desc
                ) as rn

        from    mytable
        ) t

where   t.rn = 1

+----------+----------+--------+-----------------+
|   a      |   date   |  time  |      b          |
+----------+----------+--------+-----------------+
| 35573422 | 20170412 | 193605 | 310260453908912 |
+----------+----------+--------+-----------------+

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接