2017-04-14 221 views
2
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 

我想弄清楚一个配置单元查询得到的最后一条记录插入表中与b。记录需要按时间列进行排序并获取最后一条记录。假设在上述记录中Hive查询获取插入表中的最后一条记录

35573422 20170412 193605 310260453908912 

是最后一条记录。

+0

它不使用的日期/时间戳记类型或一个非常糟糕的做法至少是ISO数据/时间戳的格式(如果由于某种原因,你使用的是真的老了蜂巢版) –

回答

1
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 | 
+----------+----------+--------+-----------------+ 
0

请使用下面的,因为它会更快,并且可以适用于情况下,我们与条款使用子查询下推。

select t.group_col, t.struct_val.col1 as date, t.struct_val.col2 as time 
from (select group_col, max(struct(date,time)) as struct_val from mytable) t 
相关问题