2014-12-04 65 views
0

該查詢根據分配給他們的人來分組門票,並計算門票已關閉的平均舍入天數。MySQL通過SELECT加入最早的DATETIME

SELECT a.id as theuser, round(avg(DATEDIFF(ta.dateClosed, t.dateAded) * 1.0), 2) as avg 
FROM tickets t join 
    mdl_user a 
    on find_in_set(a.id, t.assignedto) > 0 
GROUP BY a.id ORDER BY avg ASC 

我現在想加入ticketanswer表以找出第一個響應的平均時間。 票可能有多個答案,所以我只想得到第一個。 因此,我試圖改變查詢,以包含這一無濟於事。任何人都可以闡明我做錯了什麼?

SELECT a.id as theuser, round(avg(DATEDIFF(ta.dateAded , t.dateAded) * 1.0), 2) as avg 
FROM tickets t join 
    mdl_user a 
    on find_in_set(a.id, t.assignedto) > 0 
INNER JOIN (SELECT MIN(ta.dateAded) as started FROM ticketanswer GROUP BY ta.ticketId) ta ON t.id = ta.ticketId 
GROUP BY a.id ORDER BY avg ASC 

回答

1

對您的查詢做了一些微小的修改。

SELECT a.id as theuser, round(avg(DATEDIFF(ta.dateAded , t.dateAded) * 1.0), 2) as avg 
FROM tickets t join 
mdl_user a 
on find_in_set(a.id, t.assignedto) > 0 
INNER JOIN (SELECT ticketid, MIN(dateAded) as started FROM ticketanswer GROUP BY ticketId) ta ON t.id = ta.ticketId 
GROUP BY a.id ORDER BY avg ASC