Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:intervallo medio tra i record

Intuitivamente, ciò che stai chiedendo dovrebbe essere equivalente all'intervallo tra la prima e l'ultima data, diviso per il numero di date meno 1.

Lascia che ti spieghi più a fondo. Immagina che le date siano punti su una linea (+ sono presenti le date, - mancano le date, la prima data è il 12 e ho cambiato l'ultima data al 24 dicembre a scopo illustrativo):

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

Ora, quello che vuoi davvero fare è distanziare uniformemente le date tra queste righe e scoprire quanto tempo è tra ciascuna di esse:

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

Per farlo, prendi semplicemente il numero di giorni tra l'ultimo e il primo giorno, in questo caso 24 - 12 =12, e lo dividi per il numero di intervalli che devi distanziare, in questo caso 4:12 / 4 = 3 .

Con una query MySQL

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

Funziona su questa tabella (con i tuoi valori restituisce 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');