Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL cách lấy tổng số ngày bắt đầu / ngày kết thúc với các ngày có thể trùng lặp

Sử dụng biến để sửa các phạm vi trước khi gộp các tổng

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`

ĐẦU RA




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. truy vấn mysql để tìm dòng chạy lâu nhất trong một cột

  2. Các sản phẩm Magento nhập từ cơ sở dữ liệu bằng cách sử dụng truy vấn SQL

  3. Django và xử lý song song:

  4. New EntityManager đôi khi nhận được dữ liệu cũ từ MySQL

  5. MySQL:Nối trái và cột có cùng tên trong các bảng khác nhau