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

Групирайте редовете, ако имат припокриващи се интервали от време

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;

Това трябва да работи за вас



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при създаване на таблица в MariaDB с външен ключ

  2. Заявка за преброяване на броя на таблиците, които имам в MySQL

  3. mysqli заявка връща само първия ред

  4. MySQLdb python вмъкване на ред или увеличаване на броя на колоната, ако съществува

  5. Маркирайте текста за търсене в mysql php търсене