每个用户的平均时间?

时间:2015-01-29 17:21:50

标签: sql

以下查询我获取两个日期与特定日期差异的平均时间 时间。这是表格中的所有记录。 我想从每个user_id获得平均时间。

create table agentdispo
(callstartdt datetime, 
callenddt datetime,
user_id varchar(25)
)

SELECT AVG(average_time) as average_time
FROM (SELECT cast(convert (datetime,DateDiff(MINUTE,CallStartDt,CallEndDt))as float) as average_time 
      FROM AgentDispo
      where CALLSTARTDT between '2015-01-05' and '2015-01-31'
) as SubQuery

如何从该callstartdt日期获取每个user_id的平均时间?

2 个答案:

答案 0 :(得分:1)

为AVG时间添加group by for USER_ID和您的聚合

SELECT AVG(average_time) as average_time, user_id
FROM (SELECT cast(convert (datetime,DateDiff(MINUTE,CallStartDt,CallEndDt))as float) as average_time 
          FROM AgentDispo
          where CALLSTARTDT between '2015-01-05' and '2015-01-31'
    ) as SubQuery
GROUP BY user_id

答案 1 :(得分:1)

为什么要执行子查询?

SELECT user_id, AVG(TIMESTAMPDIFF(SECOND, callstartdt, callenddt)) as average_time
FROM AgentDispo
WHERE callstartdt between '2015-01-05' and '2015-01-31'
GROUP BY user_id;

我相信这会按预期工作。 timestampdiff获取指定单位的两个日期时间字段之间的差异。这将显示平均秒数。

group by用于为每个用户指定。

对于您的查询,您还要在子查询中指定别名 average_time两次,在主查询中指定一次。我认为这会给你带来麻烦。即使它有效,它也很混乱,你总是应该使用一个独特的别名。