Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Durchschnittliches Intervall zwischen Aufzeichnungen

Intuitiv sollte Ihre Frage dem Intervall zwischen dem ersten und dem letzten Datum entsprechen, geteilt durch die Anzahl der Daten minus 1.

Lassen Sie mich das genauer erklären. Stellen Sie sich vor, die Daten sind Punkte auf einer Linie (+ sind Daten vorhanden, - fehlen Daten, das erste Datum ist der 12., und ich habe das letzte Datum zur Veranschaulichung auf den 24. Dezember geändert):

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

Nun, was Sie wirklich tun möchten, ist, Ihre Daten gleichmäßig zwischen diesen Zeilen zu platzieren und herauszufinden, wie lange es zwischen jeder von ihnen ist:

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

Dazu nimmst du einfach die Anzahl der Tage zwischen dem letzten und dem ersten Tag, in diesem Fall 24 - 12 =12, und dividierst sie durch die Anzahl der Intervalle, die du aussparen musst, in diesem Fall 4:12 / 4 = 3 .

Mit einer MySQL-Abfrage

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

Dies funktioniert in dieser Tabelle (mit Ihren Werten gibt es 2,75 zurück):

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');