Nếu bảng của bạn là t, và cột timestamp của bạn là ts, và bạn muốn câu trả lời chỉ trong 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 đối với các bảng lớn vì nó không có n-squared JOIN
Điều này sử dụng 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 cho 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.
Bằng chứng: 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 liên kế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ỉ điều kiện các dấu thời gian được phân biệt.
Nguồn
2009-05-18 10:18:52
Cảm ơn, điều này thật tuyệt vời. –
Rực rỡ. Câu trả lời tuyệt vời để nhận được sự trùng lặp có thể có của dấu thời gian. – Bell
Thực hiện tốt. Toán đơn giản luôn là lựa chọn tốt nhất. – Rob