2013-10-11 65 views
0

我想要做的是顯示技術人員在每張票上工作的平均分鐘數,但只顯示平均值大於或等於每張票的總平均分鐘數的平均分鐘數。但是你不能在datetime上使用avg。如何從datetime獲取平均分鐘數?

我知道這是非常錯誤的,但是這是我開始有:

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) 
+2

如果你提供的表結構更有意義。很難找出哪個表中atm的哪個字段。 – Kaf

回答

2

我會使用帶有分鐘DATEDIFF()子查詢

datediff(minute,datestart,dateend) 

那麼你得到的鐘如整型數,那麼你可以做的AVG()

avg(datediff(minute,datestart,dateend)) 

---- ----編輯我 猜了一下,因爲我不知道你的表結構,但對於這個

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) 
+5

[請使用'MINUTE'而不是'm''。這是爲什麼](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx)。目前這會產生一個錯誤,無論如何,「M」是月份,而不是分鐘。我認爲這相當方便地表明瞭我的觀點:懶惰的速記是愚蠢的。 –

+3

感謝評論和鏈接到您的博客,我已經更新了我的答案,並將從現在開始避開簡寫縮寫@AaronBertrand – Hedinn

+0

但是,我該如何處理> =?我收到一個錯誤,表示將返回多個值,這是不允許的> = –