Как найти среднее значение чч: мм: сс в улье - PullRequest
1 голос
/ 06 марта 2019

Рассмотрим, у меня есть таблица улья со столбцами имя_скрипта, время начала, время окончания, длительность. Время начала, время окончания и продолжительность указываются в формате чч: мм: сс. Мое требование - найти среднее время этих столбцов за последние 7 дней и поместить в файл.

1 Ответ

0 голосов
/ 06 марта 2019

Преобразовать в unix_timestamp, суммировать, разделить на 3, преобразовать в bigint и преобразовать обратно в ЧЧ: мм: сс:

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, вычисление среднего значения в секундах, преобразование в bigint (среднее значение равно двойному, будет потеря доли во второй точности) и, наконец,преобразовать его обратно в формат времени строки:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...