【问题标题】:Matching up times in SQLSQL中的匹配时间
【发布时间】:2020-02-12 12:17:30
【问题描述】:

我有一个包含座席呼叫活动的数据库,我正在寻找座席将自己置于忙碌状态超过三分钟,然后在一分钟内休息的情况。我的结果需要显示 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)'))

【问题讨论】:

  • 请标记您的数据库供应商。 DBO 建议使用 MSSQL。

标签: sql tsql time reporting


【解决方案1】:

嗯。 . .我认为这可以满足您的要求:

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
      );

你的问题没有提到“休息”的持续时间,只是关于中间的时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 2012-05-23
    相关资源
    最近更新 更多