sql >> Databáze >  >> RDS >> Mysql

Seskupit řádky, pokud mají překrývající se časové intervaly

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 by vám mělo fungovat



  1. Chyba Postgres na insertu - CHYBA:neplatná sekvence bajtů pro kódování UTF8:0x00

  2. Co je InnoDB a MyISAM v MySQL?

  3. mysql - Použití vnějšího spojení na komplexní příkaz

  4. Highchart- Použití PHP, MYSQL a jQuery.get k analýze dat