Mysql
 sql >> база данни >  >> RDS >> Mysql

Сума на припокриващите се диапазони от време и време в 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изпълнете cronjob точно веднъж

  2. PHP in_array срещу MySQL SELECT

  3. Как да извлечете mysql данни с помощта на многонишковост на Java

  4. Най-добра практика за PHP/MySQL система за назначаване/резервиране

  5. има ли ограничение за това, което sql fiddle може да обработва? sql fiddle не компилира нищо и не връща съобщения за грешка