sql >> Database >  >> RDS >> Mysql

MySQL:gemiddeld interval tussen records

Intuïtief zou wat u vraagt ​​gelijk moeten zijn aan het interval tussen de eerste en de laatste datum, gedeeld door het aantal datums min 1.

Laat ik het wat uitgebreider uitleggen. Stel je voor dat de datums punten op een lijn zijn (+ zijn datums aanwezig, - ontbreken datums, de eerste datum is de 12e en ik heb de laatste datum gewijzigd in 24 december ter illustratie):

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

Wat u nu echt wilt doen, is uw datums gelijkmatig tussen deze regels verdelen en uitzoeken hoe lang het tussen elk van hen is:

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

Om dat te doen, neemt u eenvoudig het aantal dagen tussen de laatste en de eerste dag, in dit geval 24 - 12 =12, en deelt u dit door het aantal intervallen dat u moet uitsparen, in dit geval 4:12 / 4 = 3 .

Met een MySQL-query

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

Dit werkt op deze tabel (met jouw waarden levert het 2,75 op):

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. Debuggen van MySQL-triggers

  2. SQL Server 2008 Spatial:vind een punt in polygoon

  3. Waarom worden mijn Django SessionWizardView-enquêtetoepassingsgegevens niet in een bruikbaar formaat weergegeven in mijn MySQL-database?

  4. Oracle join-syntaxisvoorbeelden