Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kiểm tra thời gian phản hồi trên thư đã gửi - có thể chỉ sử dụng 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 

Đối với mỗi tin nhắn trong t1, chúng tôi nhận được câu trả lời tương ứng được gửi sau tin nhắn t1 và nhóm chúng lại để có ngày trả lời tối thiểu (ngày trả lời đầu tiên).

Đặt lựa chọn ở trên trong một truy vấn con và tìm AVG của response_date - msg_date

CẬP NHẬT Bạn đã sử dụng bảng m2 không chính xác. * Tôi đã thay thế bằng m1. * Và kết quả ở đó

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. Câu lệnh hợp nhất có sẵn trong MySQL không

  2. MySQL - Kết hợp nhiều điều kiện WHEN trong CASE

  3. SQL Thay thế nhiều biến từ một bảng khác trong kết quả truy vấn

  4. Nhóm Laravel theo ngày

  5. Hive 2.1.1 MetaException (thông báo:Không tìm thấy thông tin phiên bản trong hệ thống di căn.)