hiveql中max,min的不稳定行为

qcbq4gxm  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(507)

我有一张这样的table

- seek_video   2014-08-30 11:26:06 NULL    9   0
 - seek_video   2014-08-30 11:26:13 NULL    0   5
 - seek_video   2014-08-30 11:26:13 NULL    5.07195 0
 - seek_video   2014-08-31 11:05:24 NULL    330.94054   312
 - seek_video   2014-08-31 11:38:30 NULL    220 229
 - seek_video   2014-08-31 11:51:15 NULL    323.833366  345
 - seek_video   2014-08-31 11:51:16 NULL    346.223424  367
 - seek_video   2014-08-31 11:51:16 NULL    367.879296  380
 - seek_video   2014-08-31 11:51:17 NULL    381.625192  397
 - seek_video   2014-08-31 11:51:19 NULL    309.719715  323
 - seek_video   2014-08-31 11:34:33 NULL    440.885152  309
 - seek_video   2014-08-31 11:46:04 NULL    255.366326  268
 - seek_video   2014-08-31 11:46:05 NULL    268 290
 - seek_video   2014-08-31 11:46:07 NULL    290 309
 - seek_video   2014-08-31 11:44:34 NULL    231.77611   250
 - seek_video   2014-08-31 11:34:58 NULL    272 220
 - seek_video   2014-08-31 11:34:55 NULL    299 272
 - seek_video   2014-08-31 11:34:53 NULL    309 299
 - seek_video   2014-08-31 12:16:29 NULL    501.779488  489
 - seek_video   2014-08-31 12:26:32 NULL    551.362232  578
 - seek_video   2014-08-31 12:26:35 NULL    580.790634  625
 - seek_video   2014-08-31 12:26:37 NULL    627.838707  663
 - seek_video   2014-08-31 12:26:38 NULL    663.573627  649
 - seek_video   2014-08-31 12:26:39 NULL    650.194875  637
 - seek_video   2014-08-31 12:26:42 NULL    639.451178  621
 - seek_video   2014-08-31 07:58:51 NULL    9.075397    9
 - seek_video   2014-08-31 07:58:52 NULL    9   4
 - seek_video   2014-08-31 08:13:59 NULL    19.630148   27

我的问题

select max(old_time),max(new_time) from (
select event_type,time,currenttime,old_time,new_time 
from vi_log_table 
where*************) t1 ;

最后两列返回的最大值 9.075397 9 而不是 650.19 663 我对这种不可预知的行为感到非常困惑。在处理浮点值的配置单元中是否存在一些问题。
按值排序的时间排序后编辑
五百八十点七九零六三四六二五
六百五十点一九四八七五六三七
六百六十三点五七三六二七六四九
六百二十七点八三八七零七六六三
九点零七五三九七九

l3zydbqr

l3zydbqr1#

我找到了。
在hiveql中,最后两行的数据类型是string just use cast(new_time as float) 会给出正确的命令

相关问题