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

Trích thời gian để tham gia lại

Bạn có thể sử dụng lag() và sau đó lọc:

select t.*,
       datediff(start, prev_cancelled) as num_days_since_cancel
from (select t.*,
             lag(cancelled) over (partition by id order by start) as prev_cancelled
      from t
     ) t
where prev_cancelled is not null;

Tại đây là một db <> fiddle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhận giá trị tương tự trong Oracle

  2. sắp xếp php có tốt hơn so với thứ tự mysql không?

  3. Cài đặt Rails, MySQL, v.v. mọi thứ đều không ổn

  4. SQL nối 2 bảng thành 1 bảng

  5. Khóa ngoại MySQL BẬT XÓA CASCADE trên 3 bảng