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

MySQL:Khoảng thời gian trung bình giữa các bản ghi

Theo trực giác, những gì bạn đang hỏi phải tương đương với khoảng thời gian giữa ngày đầu tiên và ngày cuối cùng, chia cho số ngày trừ đi 1.

Để tôi giải thích cặn kẽ hơn. Hãy tưởng tượng ngày là các điểm trên một dòng (+ là ngày tháng, - có thiếu ngày không, ngày đầu tiên là ngày 12 và tôi đã thay đổi ngày cuối cùng thành ngày 24 tháng 12 cho mục đích minh họa):

++----+---+-+

Bây giờ, điều bạn thực sự muốn làm là khoảng cách đều các ngày của bạn giữa các dòng này và tìm khoảng thời gian giữa mỗi dòng:

+--+--+--+--+

Để làm điều đó, bạn chỉ cần lấy số ngày giữa ngày cuối cùng và ngày đầu tiên, trong trường hợp này là 24 - 12 =12 và chia nó cho số khoảng thời gian bạn có khoảng trắng, trong trường hợp này là 4:12 / 4 = 3 .

Với truy vấn MySQL

SELECT DATEDIFF(MAX(dt), MIN(dt)) / (COUNT(dt) - 1) FROM a;

Điều này hoạt động trên bảng này (với các giá trị của bạn, nó trả về 2,75):

CREATE TABLE IF NOT EXISTS `a` (
  `dt` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `a` (`dt`) VALUES
('2010-12-12'),
('2010-12-13'),
('2010-12-18'),
('2010-12-22'),
('2010-12-24');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL BẤT KỲ &TẤT CẢ các toán tử

  2. Làm cách nào để tạo cơ sở dữ liệu MySQL chạy hoàn toàn trong bộ nhớ?

  3. Với Laravel Migration, Làm cách nào để thay đổi kiểu dữ liệu của một cột và cập nhật dữ liệu hiện có của nó để phù hợp với kiểu dữ liệu mới mà không cần sử dụng các truy vấn SQL thô?

  4. MySQL Connector gắn thêm enum với giá trị nhỏ hơn giá trị thực

  5. Làm thế nào để có được mọi hàng thứ N trong MySQL