Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sprawdź czas odpowiedzi na wysłanej wiadomości - możliwe przy użyciu tylko 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 

Dla każdej wiadomości w t1 otrzymujemy odpowiednie odpowiedzi wysyłane po wiadomości t1 i grupujemy je, aby uzyskać minimalną datę odpowiedzi (data pierwszej odpowiedzi).

Umieść powyższe zaznaczenie w podzapytaniu i znajdź AVG dla response_date - msg_date

AKTUALIZACJAUżyłeś nieprawidłowej tabeli m2.*, którą zastąpiłem m1.* i wyniki są dostępne

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. Kiedy należy odbudować indeksy bazy danych?

  2. Baza danych MySQL nie uruchamia się w XAMPP Manager-osx

  3. Jak naprawić uszkodzoną tabelę xampp „mysql.user”?

  4. Uruchamianie dwóch zapytań SQL na jednej stronie php (SET + SELECT)

  5. Skorelowane podzapytanie MySQL w składni JOIN