Quan sát chính là một dãy số trừ một dãy số khác là một hằng số. Chúng tôi có thể tạo một chuỗi khác bằng cách sử dụng row_number
. Điều này xác định tất cả các nhóm:
select id, MIN(number) as low, MAX(number) as high
from (select t.*,
(number - ROW_NUMBER() over (partition by id order by number) ) as groupnum
from t
) t
group by id, groupnum
Phần còn lại chỉ là tổng hợp.