Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:średni odstęp między rekordami

Intuicyjnie to, o co prosisz, powinno odpowiadać odstępowi między pierwszą a ostatnią datą, podzielonemu przez liczbę dat minus 1.

Pozwólcie, że wyjaśnię dokładniej. Wyobraź sobie, że daty są punktami na linii (+ czy są obecne daty, - brakuje dat, pierwsza data to 12, a ostatnią datę zmieniłem na 24 grudnia w celach ilustracyjnych):

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

Teraz to, co naprawdę chcesz zrobić, to równomiernie rozmieścić daty między tymi wierszami i dowiedzieć się, jak długo jest między nimi:

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

Aby to zrobić, po prostu weź liczbę dni między ostatnim a pierwszym dniem, w tym przypadku 24 - 12 =12, i podziel ją przez liczbę interwałów, które musisz rozdzielić, w tym przypadku 4:12 / 4 = 3 .

Za pomocą zapytania MySQL

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

To działa na tej tabeli (z twoimi wartościami zwraca 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. MySQL IFNULL N/A zwraca element nie można znaleźć w kolekcji Błąd

  2. Znajdź wolny pokój (system rezerwacji)

  3. Jak przekonwertować cały zestaw znaków bazy danych MySQL i sortowanie do UTF-8?

  4. Dołącz do stołów z dwóch różnych serwerów

  5. Samouczek oceny gwiazdek Jquery za pomocą php i mysql