我的座席需要以特定技能登录到他们的控制台,然后他们可以从那里选择他们的州代码。例如,Ready,Not Ready。如果他们选择未就绪状态,则需要选择原因代码。休息室、会议等。
我希望列出登录到特定技能的每个座席的列表,并计算他们在该技能中的总秒数,但不包括特定的原因代码。例如,如果他们注销了1000秒的休息室,那么我希望从结果中减去这一点。由于某些原因,我得到的秒数比预期的要少得多。
下面演示了我的代码是如何显示的:
DECLARE @startDate DATE = '2021-08-19'
SELECT
B.Agent,
A.Date,
A.StartTime,
A.EndTime,
A.SkillTimeSecs,
A.Skill
FROM
Database.AgentSkill AS A
JOIN
Database.AgentState AS B
ON A.SessionID=B.SessionID
WHERE
A.Date = @startDate
AND B.Date = @startDate
AND B.Interval_30Minute BETWEEN '06:00:00' AND '17:00:00'
AND A.Skill = 'Agent'
AND B.ReasonCode IN ('Follow-Up Work','Task Completion','Out calls')
GROUP BY
B.Agent,
A.Date,
A.StartTime,
A.EndTime,
A.SkillTimeSecs,
A.Skill你知道为什么秒数这么低吗?
发布于 2021-08-20 22:55:20
您的SELECT语句中没有任何聚合函数,因此GROUP BY实际上是一个DISTINCT。如果需要SkillTimeSecs的总和,则需要将其从GROUP BY子句中删除,并使用SUM函数:
SELECT
B.Agent,
A.Date,
A.StartTime,
A.EndTime,
SUM(A.SkillTimeSecs) TotalSkillTimeSecs,
A.Skill
FROM
Database.AgentSkill AS A
JOIN
Database.AgentState AS B
ON A.SessionID=B.SessionID
WHERE
A.Date = @startDate
AND B.Date = @startDate
AND B.Interval_30Minute BETWEEN '06:00:00' AND '17:00:00'
AND A.Skill = 'Agent'
AND B.ReasonCode IN ('Follow-Up Work','Task Completion','Out calls')
GROUP BY
B.Agent,
A.Date,
A.StartTime,
A.EndTime,
A.Skillhttps://stackoverflow.com/questions/68868361
复制相似问题