Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Grupuj wiersze, jeśli mają nakładające się przedziały czasu

WITH C1 AS (
SELECT *,
  CASE 
WHEN start_time <= MAX(IFnull(end_time,'9999-12-31 00:00:00.000')) OVER(
  partition by id
  ORDER BY start_time 
  ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
  ) 
  THEN 0 
  ELSE 1 
END AS isstart
FROM activity
) 
SELECT ID,start_time,end_time,
   SUM(isstart) OVER(partition by id ORDER BY ID ROWS UNBOUNDED PRECEDING) AS DG 
FROM C1;

To powinno działać dla Ciebie



  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 echo liczba rekordów o tym samym identyfikatorze sesji

  2. Wstaw dane w kolumnie mysql ze spacjami za pomocą php

  3. Left Join Table i Echo in Table

  4. Wstaw format daty w dd/mm/rrrr przez laravel Eloquent Model

  5. jak uzyskać rozmiar rekordu w mysql