यह नमूना डेटा के साथ आपका वांछित परिणाम देता है। सुनिश्चित नहीं है कि यह वास्तविक विश्व डेटा के लिए काम करेगा या नहीं:
select k,
min(v) over (partition by group_nr) as min_v,
max(v) over (partition by group_nr) as max_v
from (
select *,
sum(group_flag) over (order by v,k) as group_nr
from (
select *,
case
when lag(k) over (order by v) = k then null
else 1
end as group_flag
from window_test
) t1
) t2
order by min_v;
मैंने DISTINCT
. छोड़ दिया हालांकि।