Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Intervalle moyen entre les enregistrements

Intuitivement, ce que vous demandez devrait être équivalent à l'intervalle entre la première et la dernière date, divisé par le nombre de dates moins 1.

Laissez-moi vous expliquer plus en détail. Imaginez que les dates sont des points sur une ligne (+ sont des dates présentes, - sont des dates manquantes, la première date est le 12, et j'ai changé la dernière date au 24 décembre à des fins d'illustration):

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

Maintenant, ce que vous voulez vraiment faire, c'est espacer uniformément vos dates entre ces lignes, et trouver combien de temps il y a entre chacune d'elles :

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

Pour cela, il suffit de prendre le nombre de jours entre le dernier et le premier jour, dans ce cas 24 - 12 =12, et de le diviser par le nombre d'intervalles à espacer, dans ce cas 4 :12 / 4 = 3 .

Avec une requête MySQL

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

Cela fonctionne sur ce tableau (avec vos valeurs, il renvoie 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');