Hirdetés
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Samsung Galaxy A54 - türelemjáték
- Android alkalmazások - szoftver kibeszélő topik
- Huawei P30 Pro - teletalálat
- Nemzetközi vizekre evezett a Realme GT 7 és GT 7T
- Xiaomi 15T Pro - a téma nincs lezárva
- iGO Primo
- Google Pixel topik
- Samsung Galaxy S20 és S20+ duplateszt
- Külföldi prepaid SIM-ek itthon
Ú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
- Dell Latitude 5400,14",FHD,i5-8365U,8GB DDR4,256GB SSD,WIN11
- Apple iPhone 13 mini / 128GB / Kártyafüggetlen / 12Hó Garancia / Akku: 87%
- EVGA GeForce RTX 3070 8GB GDDR6 256bit
- BESZÁMÍTÁS! Apple Macbook Pro16 M4 Pro 24GB RAM 512GB SSD notebook garanciával hibátlan működéssel
- 27% - Samsung S27D360GAU VA Monitor! 100Hz / 1920x1080 / 4ms
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


