Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:intervalo médio entre registros


Intuitivamente, o que você está perguntando deve ser equivalente ao intervalo entre a primeira e a última data, dividido pelo número de datas menos 1.

Deixe-me explicar mais detalhadamente. Imagine que as datas são pontos em uma linha (+ são datas presentes, - estão faltando datas, a primeira data é 12, e alterei a última data para 24 de dezembro para fins de ilustração):
++----+---+-+

Agora, o que você realmente quer fazer é espaçar uniformemente suas datas entre essas linhas e descobrir quanto tempo há entre cada uma delas:
+--+--+--+--+

Para fazer isso, basta pegar o número de dias entre o último e o primeiro dia, neste caso 24 - 12 =12, e dividi-lo pelo número de intervalos que você precisa espaçar, neste caso 4:12 / 4 = 3 .

Com uma consulta MySQL
SELECT DATEDIFF(MAX(dt), MIN(dt)) / (COUNT(dt) - 1) FROM a;

Isso funciona nesta tabela (com seus valores, ele retorna 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');