Hirdetés
Új hozzászólás Aktív témák
-
kojakhu
újonc
válasz
bambano
#5009
üzenetére
Közben meg is írta h mi a pontos elvárás, de a kódolástól nem láttam

Itt van, ami szerintem már helyes, csak azért h hátha meg lehet mégis csinálni.
Viszont performancia miatt nem lesz használható.
Max akkor, ha valahogy a sorok számát a rekurzív részben lehet limitálni. Pl ha lehet tudni, hogy max mekkora gapek vannak a logok között (ezt is ki lehet számolni akár), vagy esetleg az előző munkámmal lehet összeszerelni úgy h az ott előálló csoportokban kell csak részcsoportokat képezni.Szóval brahiból itt az újabb SQLFiddle link
Pls valaki mindenképpen válaszoljon (ha jó a megoldás, ha nem), mert a blogon "újoncként" nem írhatok csak 1-et amíg nincs rám válasz...Setup:
create table t (dt timestamp);
-- group 1
insert into t values (current_timestamp);
insert into t values (current_timestamp + interval '10' second);
insert into t values (current_timestamp + interval '59' second);
-- group 2
insert into t values (current_timestamp + interval '70' second);
insert into t values (current_timestamp + interval '71' second);
insert into t values (current_timestamp + interval '129' second);
-- group 3
insert into t values (current_timestamp + interval '200' second);
insert into t values (current_timestamp + interval '210' second);
insert into t values (current_timestamp + interval '220' second);
insert into t values (current_timestamp + interval '259' second);
-- group 4
insert into t values (current_timestamp + interval '260' second);
insert into t values (current_timestamp + interval '261' second);Lekérdezés:
WITH RECURSIVE rd(grp, mindt) AS (
SELECT 1 AS grp
, MIN(dt)
FROM t
UNION
SELECT rd.grp+1 AS grp
, FIRST_VALUE(t.dt) OVER (ORDER BY t.dt)
FROM t, rd
WHERE t.dt >= rd.mindt + INTERVAL '1' MINUTE
) -- rd
, grpd AS (
SELECT grp
, t.*
, MIN(dt) OVER (PARTITION BY grp) mindt
, MAX(dt) OVER (PARTITION BY grp) maxdt
, COUNT(*) OVER (PARTITION BY grp) cnt
FROM rd, t
WHERE t.dt >= rd.mindt AND t.dt < rd.mindt + INTERVAL '1' MINUTE
) -- grpd
SELECT v.*
, maxdt-mindt AS grp_duration
FROM grpd AS v
ORDER BY dt
Új hozzászólás Aktív témák
- Debrecen és környéke adok-veszek-beszélgetek
- One otthoni szolgáltatások (TV, internet, telefon)
- Autós topik
- Windows 11
- Milyen billentyűzetet vegyek?
- Kerékpárosok, bringások ide!
- Akkumulátor töltő digitális fényképezőgéphez
- Szünetmentes tápegységek (UPS)
- Gitáros topic
- Konteó topic
- További aktív témák...
- Precision 3560 15.6" FHD IPS i7-1165G7 T500 32GB 512GB NVMe IR kam gar
- HP OMEN 15 // Ryzen 7 5800H // 32GB RAM // 1TB SSD // RTX 3070
- Asztali PC , R7 5700 , RX 5700 , 16GB DDR4 , 512GB NVME , 500GB HDD
- Precision 3570 15.6" FHD IPS i7-1255U T550 32GB 512GB NVMe IR kam gar
- Komplett PC eladó (R5 3600, 4x8GB, 3060Ti)
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- Dell S3221QSA 32 4K UHD Ívelt Monitor 27% ÁFÁS
- ÚJ! 32GB (2x16GB) Kingston DDR5 5600MT/s RAM készlet Bontatlan
- Samsung Galaxy A05s 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 12 128GB,Újszerű,Adatkabel,12 hónap garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



