以下查询我获取两个日期与特定日期差异的平均时间 时间。这是表格中的所有记录。 我想从每个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的平均时间?
答案 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两次,在主查询中指定一次。我认为这会给你带来麻烦。即使它有效,它也很混乱,你总是应该使用一个独特的别名。