Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Periksa waktu respons pada pesan terkirim - mungkin dengan hanya menggunakan 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 

Untuk setiap pesan di t1 kami mendapatkan jawaban yang sesuai yang dikirim setelah pesan t1 dan mengelompokkannya untuk mendapatkan tanggal respons minimal (tanggal jawaban pertama).

Tempatkan pilihan di atas dalam subkueri dan temukan AVG dari response_date - msg_date

UPDATEAnda menggunakan tabel m2 yang salah.* Saya mengganti dengan m1.* dan hasilnya ada

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. Permintaan mysql asinkron PHP

  2. Mysql menghitung jumlah kecocokan regex per bidang

  3. Kode Kesalahan:2013. Koneksi terputus ke server MySQL selama kueri

  4. Apa itu mesin database MySQL?

  5. Baris Duplikat Mysql ( Duplikat terdeteksi menggunakan 2 kolom )