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

MySQL как да получите сбор от начални/крайни дати с възможни припокриващи се дати

Използвайте променлива, за да фиксирате диапазоните, преди да обобщите общите суми

SQL ДЕМО

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`

ИЗХОД




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да проверя дали mysql заявката не връща резултат (записът не е намерен) с помощта на php?

  2. Добавяне на множество колони в MySQL с едно изявление

  3. трябва ли да използвам отново курсора в модула MySQLdb на python

  4. #1136 - Броят на колоните не съвпада с броя на стойностите на ред 1

  5. Как да разрешите ГРЕШКА 1060:Дублиране на име на колона с помощта на Views -> Create View