sql >> Databasteknik >  >> RDS >> Mysql

MySQL hur man får en summa av start-/slutdatum med möjliga överlappande datum

Använd variabel för att fixa intervallen innan totalsummorna sammanställs

SQL DEMO

SELECT t.`fk_id`,
       @rn := if(@id = `fk_id`, 
                 @rn + 1, 
                 if(@id:=`fk_id`, if(@end:='1900-01-01 00:00:00',1,1), if(@end:='1900-01-01 00:00:00',1,1))   
                ) as rn,
       if(start < @end, 
          @end, 
          if(@end := end, `start`, `start`) 
         ) as `start`, 
       end
FROM Table1 t
CROSS JOIN (SELECT @id := 0, @end := STR_TO_DATE('1900-01-01 00:00:00', '%Y-%m-%d %H:%i:%s') as e, @rn := 0) t
ORDER BY `fk_id`, `start`

OUTPUT




  1. foreach loop:Använder alla kärnor i R (särskilt om vi skickar sql-frågor inuti foreach loop)

  2. Hur infogar jag ett datum i mysql som en parameter?

  3. Hur kan jag starta PostgreSQL på Windows?

  4. Hur ändrar man MySQL-tidszon i en databasanslutning med Java?