按日期获取来自不同表的记录之间的持续时间

时间:2011-09-11 22:16:03

标签: php mysql

这有点难以解释,但我要说我有2个表,一个用于报价,另一个用于报价回复。

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 个答案:

答案 0 :(得分: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) 

答案 1 :(得分:0)

它会对你有用吗?

SELECT AVG(TIMEDIFF(b.`date`, a.`date`))
FROM Quotes a
INNER JOIN Responses b ON (b.quote_id = a.quote_id)