select t1.*, min(t2.msg_date) as response_date
from mytable t1 join mytable t2
on t1.msg_sender=t2.msg_receiver and t2.msg_sender=t1.msg_receiver and t2.msg_date>t1.msg_date
group by t1.msg_sender,t1.msg_receiver,t1.msg_date
t1 में प्रत्येक संदेश के लिए हमें t1 संदेश के बाद भेजे गए संबंधित उत्तर मिलते हैं और उन्हें न्यूनतम प्रतिक्रिया तिथि (पहली उत्तर तिथि) प्राप्त करने के लिए समूहित करते हैं।
उपरोक्त चयन को एक सबक्वेरी में रखें और प्रतिक्रिया_तिथि का औसत खोजें - msg_date
अद्यतन करेंआपने गलत तालिका m2 का उपयोग किया है।* मैंने m1 से बदल दिया है।* और परिणाम हैं
SELECT
AVG(UNIX_TIMESTAMP(response_date) - UNIX_TIMESTAMP(msg_date)),
AVG(response_date - msg_date)
FROM
(SELECT
m1.*,
min(m2.msg_date) as response_date
FROM
edu_messages m1
JOIN
edu_messages m2 ON m1.msg_sender = m2.msg_receiver AND m2.msg_sender = m1.msg_receiver AND m2.msg_date > m1.msg_date
GROUP BY
m1.msg_sender,
m1.msg_receiver,
m1.msg_date) AS table1