sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Genomsnittligt intervall mellan poster

Intuitivt bör det du frågar motsvara intervallet mellan första och sista datum, dividerat med antalet datum minus 1.

Låt mig förklara mer ingående. Föreställ dig att datumen är punkter på en linje (+ är datum närvarande, - saknas datum, det första datumet är den 12:e, och jag ändrade det sista datumet till 24:e december i illustrationssyfte):

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

Nu, vad du verkligen vill göra, är att fördela dina datum jämnt mellan dessa rader och ta reda på hur lång tid det är mellan var och en av dem:

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

För att göra det tar du helt enkelt antalet dagar mellan de sista och första dagarna, i det här fallet 24 - 12 =12, och dividerar det med antalet intervaller du måste göra mellanrum, i det här fallet 4:12 / 4 = 3 .

Med en MySQL-fråga

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

Detta fungerar på den här tabellen (med dina värden returnerar 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. Viloläge:Skapa index

  2. SELECT INTO en tabellvariabel i T-SQL

  3. Sluta att MySQL tolererar flera NULLs i en UNIK begränsning

  4. mySQL - Tabelllåsning vs radlåsning