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

Làm thế nào để tìm chênh lệch thời gian trung bình giữa các hàng trong bảng?

Nếu bảng của bạn là t và cột dấu thời gian của bạn là ts và bạn muốn có câu trả lời sau vài giây:

SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts) ) 
       /
       (COUNT(DISTINCT(ts)) -1) 
FROM t

Điều này sẽ nhanh hơn hàng dặm đối với các bảng lớn vì nó không có THAM GIA bình phương nào

Điều này sử dụng một thủ thuật toán học dễ thương giúp giải quyết vấn đề này. Bỏ qua vấn đề trùng lặp trong thời điểm này. Chênh lệch thời gian trung bình giữa các hàng liên tiếp là chênh lệch giữa dấu thời gian đầu tiên và dấu thời gian cuối cùng, chia cho số hàng -1.

Chứng minh:Khoảng cách trung bình giữa các hàng liên tiếp là tổng khoảng cách giữa các hàng phân biệt, chia cho số hàng liên tiếp. Nhưng tổng của sự khác biệt giữa các hàng liên tiếp chỉ là khoảng cách giữa hàng đầu tiên và hàng cuối cùng (giả sử chúng được sắp xếp theo dấu thời gian). Và số hàng liên tiếp là tổng số hàng -1.

Sau đó, chúng tôi chỉ cần điều kiện các dấu thời gian phải khác biệt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể nối nhiều hàng MySQL vào một trường không?

  2. Xóa dữ liệu trong bảng MySQL bằng PHP?

  3. Cách hiển thị ngày tháng ở định dạng iso 8601 với PHP

  4. Lưu trữ tất cả các thay đổi dữ liệu với mọi chi tiết (như Stackoverflow)

  5. Xóa điều khoản giới hạn khỏi MySQL Workbench