sql >> Databáze >  >> RDS >> Mysql

Zkontrolujte dobu odezvy na odeslanou zprávu - možné pouze s použitím 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 

Pro každou zprávu v t1 dostáváme odpovídající odpovědi zaslané po t1 zprávě a seskupujeme je, abychom získali minimální datum odpovědi (datum první odpovědi).

Umístěte výběr výše do dílčího dotazu a najděte AVG z response_date - msg_date

UPDATEPoužili jste nesprávnou tabulku m2.* Nahradil jsem m1.* a výsledky jsou

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. Připojení MySQL nefunguje

  2. Test výkonu MS SQL Server na Linuxu vs Windows, abyste zjistili rozdíl

  3. PostgreSQL dočasné tabulky

  4. Jak duplikovat databázi MySQL na stejném serveru