2011-09-11 22 views
0

這有點棘手,但我們假設我有兩個表格,一個用於引號,另一個用於引號迴應。獲取按日期從不同表格中記錄的時間段

Table: Quotes 
----------------- 
id | name | date(DATETIME) 
1 | foo | 2012-09-11 16:21:18 
2 | bar | 2012-09-11 16:48:28 

Table: Responses 
----------------- 
quote_id | response | date(DATETIME) 
1   | blah  | 2012-09-11 16:28:42 
2   | Meh  | 2012-09-11 16:58:34 

我想根據扣除報價日期從響應日期扣除報價的總平均響應率。

所以我得到了8.7秒的平均響應時間。

如何儘可能高效地使用MySQL查詢(如果可能)?

P.S.一個報價可以有多個響應,計算應該只考慮每個報價的第一個響應以獲得準確的結果。

回答

2

這會將您的報價加入到響應中的第一個日期並獲取AVG TIMEDIFF。這隻會考慮那些有迴應的報價。

SELECT AVG(TIMEDIFF(b.`date`, a.`date`)) 
FROM Quotes a 
INNER JOIN (
    SELECT quote_id, MIN(`date`) as `date` 
    FROM Responses 
    GROUP BY quote_id) b 
    ON (b.quote_id = a.quote_id) 
+0

不錯的解決方案,我試了一下,它部分工作!問題是它只考慮了整個計算的第一個報價。 – Ryan

+0

編輯,忘了在子查詢中添加一個GROUP BY –

+0

非常感謝你,你搖滾! – Ryan

0

它適合你嗎?

+0

謝謝你,我忘了提及一個報價可以有多個響應,所以它應該只考慮每個報價的第一個響應的計算。 – Ryan

相關問題