आप आसन्न मूल्यों के समूहों की पहचान करना चाहते हैं। एक तरीका है lag()
. का इस्तेमाल करना अनुक्रम की शुरुआत खोजने के लिए, फिर समूहों की पहचान करने के लिए एक संचयी योग।
दूसरी विधि पंक्ति संख्या का अंतर है:
select value, min(id) as from_id, max(id) as to_id
from (select t.*,
(row_number() over (order by id) -
row_number() over (partition by val order by id
) as grp
from table t
) t
group by grp, value;