Время совпадения в SQL - PullRequest
       6

Время совпадения в SQL

1 голос
/ 12 февраля 2020

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

Я дошел до этого далеко, но моя голова согнута в этом - любая помощь, я буду признателен за это !!

SELECT * 
FROM
    DBO.AgentActivityReport Ar1

    Inner join dbo.AgentActivityReport Ar2
    on Ar1.[User_ID] = Ar2.[User_ID]
WHERE 
(
    Ar1.[ACTIVITY] = 'Busy'
    AND
    Ar1.[DURATION] > '00:03:00.0000000'
)
OR 
(
    Ar1.[ACTIVITY] LIKE 'Break (Tea Break)'
    AND
    Ar1.[DURATION] > '00:10:00.0000000'
)
OR
(
    Ar1.[ACTIVITY] LIKE 'Break (Lunch Break)'
AND
    Ar1.[DURATION] > '00:30:00.0000000'
)

AND Ar1.Activity in (select Ar2.Activity from dbo.AgentActivityReport Ar2 where Ar2.Activity in ('Break (Tea Break)','Break (Lunch Break)'))

ExampleData

1 Ответ

0 голосов
/ 12 февраля 2020

Хммм. , , Я думаю, что это то, что вы хотите:

SELECT * 
FROM DBO.AgentActivityReport Ar1 JOIN    
     dbo.AgentActivityReport Ar2
     ON Ar1.[User_ID] = Ar2.[User_ID]
WHERE (Ar1.[ACTIVITY] IN ('Busy')
       Ar1.[DURATION] > '00:03:00.0000000'
      ) AND
      (Ar1.[ACTIVITY] IN ('Break (Tea Break)', 'Break (Lunch Break)') AND
       DATEDIFF(SECOND, AR1.FINISH, AR2.START) < 60
      );

Ваш вопрос ничего не говорит о продолжительности "перерыва", только о промежутке времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...