Задать вопрос
@habrakot

Как сложить два временных интервала?

Добрый день.

Есть учёт рабочего времени. Люди утром приходят, вечером уходят. и так весь месяц. время между приходом и уходом я посчитал. Теперь мне эту разницу во времени надо сложить и получить сколько каждый сотрудник был на месте. Как это сделать?
  • Вопрос задан
  • 892 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    MS SQL Server Developer
    5 месяцев
    Далее
  • Merion Academy
    Основы реляционных баз данных SQL
    1 месяц
    Далее
  • OTUS
    SQL для разработчиков и аналитиков
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Из таблицы приходов/уходов подзапросом выбрать идентификатор сотрудника и datediff (в часах) тех записей, у которых даты относятся к определённому месяцу, а потом основным запросом сгруппировать по идентификтору сотрудника и выполнить суммирующую агрегацию часов.

select employee_id, sum(work_hours) as work_hours from (
    select employee_id, datediff(hh, coming_time, leaving_time) as work_hours
    from work_schedule
    where Year(coming_time) = Year(CURRENT_TIMESTAMP) and Month(coming_time) = Month(CURRENT_TIMESTAMP)
) as sq group by employee_id;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы