Mysql
 sql >> база данни >  >> RDS >> Mysql

Проверете времето за отговор на изпратеното съобщение - възможно ли е само с 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 

За всяко съобщение в t1 получаваме съответните отговори, изпратени след съобщението t1, и ги групираме, за да получим минимална дата на отговор (дата на първи отговор).

Поставете избрания по-горе в подзаявка и намерете AVG на response_date - 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете последния въведен идентификатор на автоматично увеличение в mysql

  2. MySQL Въпрос относно планирането

  3. Mysql как да обединя таблици

  4. включете клас Jfactory във външен php файл, Joomla

  5. PHP грешка:Извикване на функция-член rowCount() на необект