sql >> Database teknologi >  >> RDS >> Mysql

Tjek svartid på sendt besked - muligt med kun at bruge SQL?

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 
 

For hver besked i t1 får vi tilsvarende svar sendt efter t1 besked og grupperer dem for at få minimal svardato (første svardato).

Placer det valgte ovenfor i en underforespørgsel, og find AVG for response_dato - msg_dato

OPDATERINGDu brugte forkert tabel m2.* Jeg erstattede med m1.* og resultaterne er der

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


  1. Sådan unpivot en tabel i PostgreSQL

  2. MySQL Beregn procentdel

  3. Få størrelsen på alle databaser i PostgreSQL (psql)

  4. MySQL eller tilstand