Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从datetime获得平均分钟数?_Sql_Sql Server_Sql Server 2008_Datetime - Fatal编程技术网

Sql 如何从datetime获得平均分钟数?

Sql 如何从datetime获得平均分钟数?,sql,sql-server,sql-server-2008,datetime,Sql,Sql Server,Sql Server 2008,Datetime,我想做的是显示技师处理每张票的平均分钟数,但仅当平均时间大于或等于每张票的总平均分钟数时。但是你不能在datetime上使用avg 我知道这是非常错误的,但这就是我的出发点: select user_firstname + ' ' + user_lastname as technician_name, avg(ticket_requestdate - ticket_closeddate) as average_minutes_per_ticket from hd_users join

我想做的是显示技师处理每张票的平均分钟数,但仅当平均时间大于或等于每张票的总平均分钟数时。但是你不能在datetime上使用avg

我知道这是非常错误的,但这就是我的出发点:

select user_firstname + ' ' + user_lastname as technician_name, 
avg(ticket_requestdate - ticket_closeddate) as average_minutes_per_ticket
from hd_users
    join hd_tickets on ticket_requestor_id=user_id
where user_is_technician = '1' 
having avg(ticket_requestdate - ticket_closeddate) >=
        (select avg(ticket_requestdate - ticket_closeddate) from hd_users)
我将在子查询中使用datediff()和分钟

datediff(minute,datestart,dateend)
然后将分钟数设为int,然后可以进行avg()

----编辑---- 我猜了一下,因为我不知道你的桌子结构,但是这个呢

select user_firstname + ' ' + user_lastname as technician_name, 
avg(Datediff(minute,ticket_requestdate,ticket_closeddate)) as average_minutes_per_ticket
from hd_users
join hd_tickets on ticket_requestor_id=user_id
where user_is_technician = '1' 
GROUP BY user_firstname, user_lastname 
having avg(Datediff(minute,ticket_requestdate,ticket_closeddate)) >=
    (select avg(Datediff(minute,ticket_requestdate,ticket_closeddate)) from hd_users)

如果您提供表结构,则更有意义。很难找出哪个字段在哪个表中。。目前这会产生一个错误,
M
表示月份,而不是分钟。我想这很好地说明了我的观点:懒惰的速记是愚蠢的。谢谢你的评论和你博客的链接,我已经更新了我的答案,从现在开始@aaronbertrand将避免使用速记缩写,但是我如何处理>=?我收到一个错误,它说将返回多个值,这是>=@Laura不允许的。您没有在表达式中保留
avg
?您只需将
ticket\u requestdate-ticket\u closeddate
替换为
datediff(分钟、ticket\u requestdate、ticket\u closeddate)
,其他内容保持不变。无论如何,您当前的查询是反向的-这意味着请求日期晚于结束日期,这没有多大意义。我想您也缺少一个分组,请看我最近的编辑@LauraHarmon
select user_firstname + ' ' + user_lastname as technician_name, 
avg(Datediff(minute,ticket_requestdate,ticket_closeddate)) as average_minutes_per_ticket
from hd_users
join hd_tickets on ticket_requestor_id=user_id
where user_is_technician = '1' 
GROUP BY user_firstname, user_lastname 
having avg(Datediff(minute,ticket_requestdate,ticket_closeddate)) >=
    (select avg(Datediff(minute,ticket_requestdate,ticket_closeddate)) from hd_users)