Это основа решения, но мне пришлось вручную отформатировать столбцы запроса как время, и вам пришлось бы добавить 1, как вы говорите, к столбцу C, если смещение разделено на полночь:
=ArrayFormula(query({A2:A,to_pure_number(B2:B),to_pure_number(C2:C)},"select Col1,max(Col3)-min(Col2),sum(Col3)-Sum(Col2) where Col1 is not null
group by Col1 label Col1 'Shift',max(Col3)-min(Col2) 'Total',sum(Col3)-Sum(Col2) 'Task' "))
Вот предложение по обработке смен, которые go от полуночи до следующего дня. Необходимо добавить 1 к обоим столбцам времени, чтобы получить правильный результат. Это предполагает, что задачи вводятся в правильном порядке в каждой смене или, по крайней мере, первая задача вводится первой для каждой смены:
=ArrayFormula(query({A2:A,to_pure_number(B2:B+(B2:B<vlookup(A2:A,{A2:A,B2:B},2,false))),
to_pure_number(C2:C+(C2:C<vlookup(A2:A,{A2:A,B2:B},2,false)))},"select Col1,max(Col3)-min(Col2),sum(Col3)-Sum(Col2) where Col1 is not null
group by Col1 label Col1 'Shift',max(Col3)-min(Col2) 'Total',sum(Col3)-Sum(Col2) 'Task' "))