Не получается посчитать в T-SQL DateDiff для timestamp в разных строках одной колонки

Это учебная задача, вкратце состоит в следующем: есть таблица описывающая работу колл-центра и его сотрудников (операторов), а именно есть колонки Agent_id, State_id, state_start_timestamp, state_end_timestamp. Колонка state_id описывает, что именно сейчас делает оператор в системе ( статусы закодированы по типу:

  • 1 - Вошёл в систему,
  • 2 - доступен для звонка,
  • 3 - говорит и т.д т.п. до
  • 7 - выход из системы)

Нужно вывести данные сгруппированные по дню и агенту - сколько агент говорил, сколько был доступен и сколько всего был в системе. в случае статусов 2,3,4 всё просто

SUM(case state_id when 1 then DATEDIFF(second, state_start, state_end ) end ) GROUP BY Agent_ID

, а как посчитать всё время в системе ? Сумма всех Case дает число длинною больше суток, я хочу явно прописать datediff статусов 7 и 1 (в рамках одного дня конечно)


Буду очень благодарен за совет как лучше всего группировать по дню - на данный момент это реализовано так:

datefromparts(datepart(year, timestamp), datepart(month, timestamp), datepart(day, timestamp)) AS calendar_day

Ответы (0 шт):