1、round:四捨五入
round(double d) : 返回double型的d的bigint型別的近似值
round(double d,int) : 返回double型的d的保留n位小數的double型別的近似值
2、ceil:向上取整
ceil(double d): d是double型別的,返回》=d的最小的bigint值
3、floor:向下取整
floor(double d): d是double型別的,返回<=d的最大的bigint值
4、取隨機數
rand() rand(int seed): 每行返回乙個double型的隨機數,整數seed是隨機因子
需求:
每天直播時長超過半小時算半小時,不到半小時捨去算直播時長。
excel中有直接的公式可以取,但hive中好似不行。
=floor(a1,0.5) excel中
select floor(3.4)
select substr(round(123.58,1),-1,1);
select round(123.58,1)
最終,hive可以這樣實現需求:
select floor(123.58)+(case when int(substr(round(123.58,1),-1,1))>=5 then 0.5 else 0 end);
實際的計算指令碼:
select room_id,count(case when live_hours>=1 then pt_day else null end) eff_live_days,sum(live_hours) live_hours,sum(floor(live_hours)+(case when int(substr(round(live_hours,1),-1,1))>=5 then 0.5 else 0 end)) live_hours_half
from (select room_id,pt_day,sum(unix_timestamp(updated_time)-unix_timestamp(switch_time))/60/60 live_hours
from honeycomb_all_live_history_status
where pt_month='2018-04' and category_id=111
group by room_id,pt_day) x
group by room_id;
hive浮點數轉化為整數
1 round 四捨五入 round double d 返回double型的d的bigint型別的近似值 round double d,int 返回double型的d的保留n位小數的double型別的近似值 如 select round cust rate from tmp.test select ...
浮點數的儲存以及 浮點數的比較
浮點數的儲存採用的是近似的原理 float儲存格式為 s e m 1位符號位 8位指數 23位尾數 轉成數值即為 v 1 s 1.m 2 e 127 對於16.5轉成二進位制為00010000.1 1.00001 2 4,那麼在記憶體的表示為 符號位 指數4 127 131 尾數 0 1000001...
單精度浮點數的取值,表示以及相關
可以表示的範圍為 3.40282 10 38 1.1111 1 2 127 即 0 11111110 11111111111111111111111 23個1 單精度浮點數可以表示1.175 10 38 1.00 0 2 126 的資料而不損失精度。0 00000001 00000000000000...