Не получается посчитать в 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