Reputation: 321
What I want to do is show the average number of minutes a technician has worked on each ticket, but only where the average is greater than or equal to the overall average minutes per ticket. But you can't use avg on datetime.
I know this is quite wrong, but this is what I'm starting with:
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)
Upvotes: 0
Views: 2151
Reputation: 864
I would use datediff() with minutes in a subquery
datediff(minute,datestart,dateend)
then you get the number of minutes as int and then you can do the avg()
or
avg(datediff(minute,datestart,dateend))
----EDIT ---- I'm guessing a bit since I don't know your table structure, but what about this
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)
Upvotes: 2