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

Nhóm các hàng nếu chúng có khoảng thời gian trùng nhau

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;

Điều này sẽ hiệu quả với bạn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa các tệp không có trong mySQL TABLE

  2. Lưu trữ giá trị băm SHA1 trong MySQL

  3. Khóa ngoại và NULL trong mySQL

  4. CakePHP:hasMany liên kết không được công nhận

  5. Cách tạo cơ sở dữ liệu mysql với phần tiếp theo (nodejs)