sql >> Database >  >> RDS >> Mysql

Som aantal overlappende datum- en tijdbereiken in MySQL

SELECT
  COUNT(*) as occurrence
  , sub.event_id
  , SEC_TO_TIME(SUM(LEAST(e1end, e2end) - GREATEST(e1start, e2start)))) as duration
FROM
  (  SELECT  
      , e1.event_id
      , UNIX_TIMESTAMP(e1.starttime) as e1start
      , UNIX_TIMESTAMP(e1.endtime) as e1end
      , UNIX_TIMESTAMP(e2.starttime) as e2start
      , UNIX_TIMESTAMP(e2.endtime) as e2end
    FROM events e1
    INNER JOIN events e2 
      ON (e1.eventtype = e2.eventtype AND e1.id <> e2.id
      AND NOT(e1.starttime > e2.endtime OR e1.endtime < e2.starttime))
  ) sub
GROUP BY sub.event_id 
ORDER BY occurrence DESC



  1. MySQL Selecteer slechts één rij van elke gediagnosticeerde patiënt volgens de eerste datum

  2. Hoe een enkel bestand uit de mediawinkel te verwijderen?

  3. Django ManyToMany door met meerdere databases

  4. De schoonste manier om een ​​SQL-string in Java te bouwen