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

MySQL:Gennemsnitligt interval mellem poster

Intuitivt bør det, du spørger, svare til intervallet mellem den første og sidste dato, divideret med antallet af datoer minus 1.

Lad mig forklare mere grundigt. Forestil dig, at datoerne er punkter på en linje (+ er datoer til stede, - mangler datoer, den første dato er den 12., og jeg ændrede den sidste dato til den 24. december til illustrationsformål):

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

Nu, hvad du virkelig ønsker at gøre, er at fordele dine datoer jævnt mellem disse linjer og finde ud af, hvor lang tid der er mellem hver af dem:

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

For at gøre det skal du blot tage antallet af dage mellem sidste og første dag, i dette tilfælde 24 - 12 =12, og dividere det med antallet af intervaller, du skal bruge mellemrum, i dette tilfælde 4:12 / 4 = 3 .

Med en MySQL-forespørgsel

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

Dette virker på denne tabel (med dine værdier returnerer det 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. PHP password_verify virker ikke mod databasen

  2. Sådan finder du LEFT OUTER JOIN eller RIGHT OUTER JOIN med ORACLE JOIN (+)

  3. Kombinerer du to tabeller med sql JOIN?

  4. Hvordan implementerer man husk mig-funktionen?