2011-09-11 2 views
0

이것은 다소 까다 롭습니다.하지만 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. 견적은 여러 개의 응답을 가질 수 있습니다. 계산은 정확한 결과를 얻기 위해 각 견적의 첫 번째 응답 만 고려해야합니다.

답변

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

관련 문제