:)
tai jei nera rankyciu, tai nera ir pyrageliu. Jei irasu grupavimui neimanoma
apibrezti kriteriju, tai, mano galva, irasai is viso neimanoma sugrupuoti
niekaip, nes nera grupavimo salygos...
Jei rimtai, tai is duotu duomenu galeciau pasakyti, kad sekantis irasas
priklauso kitai grupei, jei laiko skirtumas yra didesnis nei 3 sekundes.
Idedu ideja kaip galima sugrupuoti irasus tikrinant ankstesne reiksme, gal
pades. Cia ideja tokia, kad grupuojami visi irasai, kuriu data vienas nuo
kito skiriasi ne daugiau kaip viena diena
with dummy_tbl as
(
select to_date('20100103', 'yyyymmdd') stamp from dual union all
select to_date('20100104', 'yyyymmdd') from dual union all
select to_date('20100105', 'yyyymmdd') from dual union all
select to_date('20100120', 'yyyymmdd') from dual union all
select to_date('20100121', 'yyyymmdd') from dual union all
select to_date('20100122', 'yyyymmdd') from dual union all
select to_date('20100123', 'yyyymmdd') from dual union all
select to_date('20100201', 'yyyymmdd') from dual union all
select to_date('20100202', 'yyyymmdd') from dual
)
select
q1.stamp,
sum (q1.start_of_group) over (order by q1.stamp) group_id
from
(
select
t.stamp,
lag (t.stamp, 1, t.stamp) over (order by t.stamp) pre_stamp,
t.stamp - lag (t.stamp, 1, t.stamp-11) over (order by t.stamp) stamp_diff,
case when t.stamp - lag (t.stamp, 1, t.stamp-11) over (order by t.stamp) > 1
then 1 end start_of_group -- cia prasideda nauja grupe
from dummy_tbl t
) q1
toliau kiekvienam group_id gali issitraukti min ir max data ir gausi
intervalus.