Hirdetés
Új hozzászólás Aktív témák
-
bambano
titán
kösz mindkettőtöknek, de nekem ez egy kicsit bonyolult

én a következőkre jutottam: neten talált ötlet, hogy rakjak a számsorra egy rank()-et. lényeg, hogy subselectben kell legyen a számsor, mert a distinct meg a rank postgresben nem fér össze.a szám-rank() az gyakorlatilag megmondja, hogy hány szám maradt ki eddig a sorból. ami azt is jelenti, hogy egy részsorozaton belül a szám-rank() konstans. vagyis kezelhető group by-jal.
select min(number),max(number),count(*) from (
select number,number-rank() over (order by number) as ranked from (
select distinct number as number from item order by 1) as w
) as q group by ranked order by 1;a legbelső selectből kitöröltem a nem publikus részt.
-
nyunyu
félisten
válasz
bambano
#3645
üzenetére
Ilyesmi feladatba már sikerült belefutnom melóhelyen.
Ottani kódom erősen leegyszerűsítve.DB adminjaink persze nem szoktak szeretni érte, amikor több millió soros táblákból kell kibogarásznom pár tízezer hasznos rekordot, majd azokat intervallumokba rendezni...
Query plant kielemezve mindenféle Cartesian join kerülendő szakszavakkal dobálózva próbálják levenni a rontást a DB performanciáról. -
tm5
tag
válasz
bambano
#3645
üzenetére
Ezt sqlfiddleben raktam össze:
/*schema setup:*/
create table t1(c1 integer);
insert into t1 values (1);
insert into t1 values (2);
insert into t1 values (3);
insert into t1 values (4);
insert into t1 values (6);
insert into t1 values (7);
insert into t1 values (10);
insert into t1 values (11);
/*a query:*/
select * from (
select c1,
CASE
WHEN plus1 != kovetkezo THEN 'vegelem'
WHEN minus1 != elozo THEN 'kezdoelem'
WHEN elozo IS NULL THEN 'kezdoelem'
WHEN kovetkezo IS NULL THEN 'vegelem'
ELSE 'kozbulso'
END tipus
from
(select c1, c1-1 minus1, c1+1 plus1, lag(c1) over () elozo, lead(c1) over () kovetkezo from t1) t) tt
where tipus != 'kozbulso';ezután már csak egy pivot kéne, de arra már nem volt energiám

-
bambano
titán
postgresben érdekelne az év elejei agyzsibbasztás

van egy halmazom egész számokból. ezeket kellene intervallumok sorozataként felsorolni. tehát ha van 1,2,3,4,6,7,10,11, akkor kapnom kellene egy 1-4,6-7,10-11 sorozatot.
Új hozzászólás Aktív témák
- Gamer PC
- SAMSUNG Galaxy Watch 4 Classic 46mm - Ezüst - LTE - BluTooth - WiFi - GPS
- Bomba ár! Lenovo ThinkPad T14s G3 - i5-1245U I 16GB I 256SSD I 14,1" WUXGA I Cam I W11 I Garancia!
- Bomba ár! Lenovo ThinkPad T580 - i7-8G I 16GB I 512SSD I 15,6" FHD I Cam I W11 I Garancia!
- Bomba ár! Lenovo ThinkPad P52 XEON I 32GB I 512SSD I Nvidia I 15,6" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


