这有点难以解释,但我要说我有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。引用可以有多个响应,计算应该只考虑每个引用的第一个响应以获得准确的结果。
答案 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)