如何在hive中找到hh:mm:ss的平均值

km0tfn4u  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(559)

假设我有一个配置单元表,其中包含script\u name、start\u time、end\u time和duration列。开始时间、结束时间和持续时间的格式为hh:mm:ss。我的要求是找到这些列过去7天的平均时间,并放入一个文件中。

zsohkypk

zsohkypk1#

转换为unix\u timestamp,sum,除以3,转换为bigint并转换回hh:mm:ss:

with data as --Data example. Use your table instead
(select '12:10:30' start_time,'01:10:00' end_time, '02:10:00' duration)

select from_unixtime(cast((unix_timestamp(start_time,'HH:mm:ss')+ unix_timestamp(end_time,'HH:mm:ss')+unix_timestamp(duration,'HH:mm:ss'))/3 as bigint),'HH:mm:ss') from data;

结果:

05:10:10

请参见此处的测试:http://demo.gethue.com/hue/editor?editor=285484&type=hive
对于单列:
转换为unix timestamp,以秒为单位计算平均值,转换为bigint(平均值是double,会有部分秒精度损失),最后将其转换回字符串时间格式:

with data as --Data example. Use your table instead
(select stack(2,'12:10:30','01:10:00') as timeStr)

select from_unixtime(cast(avg(unix_timestamp(timeStr,'HH:mm:ss'))as bigint),'HH:mm:ss') from data;

结果:

06:40:15

请参见此处的测试:http://demo.gethue.com/hue/editor?editor=285464&type=hive

相关问题