Время, затраченное на работу на основе идентификаторов и группы после запроса - PullRequest
0 голосов
/ 16 апреля 2020

Я использую Oracle. Имея таблицу в виде:

Datetime                             Job_Indicator          JobID
17/02/2020 18:03:45                  Job start              Job 500
17/02/2020 18:15:55                  NA                     Job 500
17/02/2020 18:23:36                  NA                     Job 500
...
...
17/02/2020 18:30:22                  Job start             Job 600
17/02/2020 18:32:45                  NA                    Job 600
17/02/2020 18:40:12                  NA                    Job 600

Мне нужно общее время, затрачиваемое на каждую работу. Операция будет выглядеть следующим образом:

Для JobID «Job 500» -> Общее время выполнения = 17/02/2020 18:23:36 - 17/02/2020 18:03:45

Для JobID «Job 600» -> Общее время выполнения = 17/02/2020 18:40:12 - 17/02/2020 18:30:22

Результат должен быть:

JobID             Time Taken
Job 500           19 minutes 51 seconds
Job 600           9 minutes 50 seconds 
...    ...  

Мне просто не удается заставить этот запрос работать ..

Ответы [ 2 ]

0 голосов
/ 16 апреля 2020

Вы можете просто вычесть время начала (= min) и время окончания (= max), предполагая, что столбец datetime является меткой времени

select jobid, max(datetime) - min(datetime) as total_time_taken
from the_table
group by jobid;

Результат вычитания одного timestamp из другого равен interval

Если столбец имеет значение date, вы получите продолжительность в дробных днях (например, 1,2 будет один день 4 часа и 48 минут)

0 голосов
/ 16 апреля 2020

Вы можете использовать агрегацию:

select jobID, max(datetime) - min(datetime)
from t
group by jobId;

Предполагается, что, как и в ваших выборочных данных, минимум datetime соответствует моменту начала работы.

Это помещает результаты в десятичных днях. Я бы порекомендовал использовать десятичные единицы. Если вы хотите минут:

select jobID,
       (max(datetime) - min(datetime)) * (24 * 60) as decimal_minutes
from t
group by jobId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...