- A tajvani chipgyártóknak is beteszi a kaput a Hormuzi-szoros lezárása
- Vékony, sokgombos, játszós és produktív: így jellemezhető a Corsair klaviatúrája
- Az ASUS megvillantotta a ROG Strix G szériás noteszeinek 2026-os mezőnyét
- Megjött az Antec Flux Pro baglyos kiadása
- Hall-effektusos "félbillentyűzet" jött a Keychrontól
- Fujifilm X
- Apple MacBook
- Milyen monitort vegyek?
- Milyen billentyűzetet vegyek?
- Az ASUS megvillantotta a ROG Strix G szériás noteszeinek 2026-os mezőnyét
- Projektor topic
- Ha az alaplapi hangchipnél jobbra váltanál, itt az új Sound Blaster hangkártya
- Házi erősítő építése
- Androidos tablet topic
- LG LCD és LED TV-k
Új hozzászólás Aktív témák
-
bambano
titán
válasz
bambano
#4461
üzenetére
én erre jutottam:
1. generálom a következő napok dátumait
2. ebből kidobom, ami szerepel a calendar táblában
3. kilistázom a maradékból a munkanapokat, sorbarendezve
4. a listából az n. elemet lekérdezemamiben nagyon más: van generátor függvény, ami többek között dátum típusra is működik, és az ünnepeket egy not in subselect halmazzal szedem ki.
kb. így néz ki postgresql-ben:
select l.nap,date_part('dow',l.nap),to_char(l.nap,'YYYYMMDD') as kompaktdatum from(select date_trunc('day',generate_series(now()+'1 day'::interval,now()+'30 days'::interval,'1 day'::interval)) as nap ) lwhere l.nap not in (select distinct date from calendar where date>now()and date<now()+'30 days'::interval)and date_part('dow',l.nap) in (1,2,3,4,5) order by l.nap limit 1 offset 5; -
nyunyu
félisten
válasz
bambano
#4461
üzenetére
Oracle:
with extra_nap as (
select '20200410' datum, '7' nap from dual
union
select '20200413' datum, '7' nap from dual
union
select '20200501' datum, '7' nap from dual),
szamok as (
select level l
from dual
connect by level <= 1000),
datumok as
(select to_char(sysdate+l,'yyyymmdd') datum,
case when nvl(e.nap, to_char(sysdate+l,'d')) in ('1','2','3','4','5') --hétfő..péntek
then 'Y'
else 'N'
end munkanap
from szamok l
left join extra_nap e
on e.datum=to_char(sysdate+l,'yyyymmdd'))
select datum, row_number() over (order by datum) rn
from datumok
where munkanap='Y';Extra_nap "táblába" felvettem a nagypénteket, húsvéthétfőt, május elsejét vasárnapi munkarenddel.
Aztán legenerálom a következő 1000 nap dátumát, és melléteszek egy munkanap flaget, ami az extra_napban beállítottból vagy a hanyadik nap a héten értéktől függ.
Végül leválogatom a munkanapokat és melléteszek egy sorszámot, hogy ő hanyadik. -
Apollo17hu
őstag
válasz
bambano
#4461
üzenetére
Fognám a calendar táblát, raknék rá egy "nagyobb, mint a bemenő dátum" ÉS "legyen munkanap" szűrést, majd a kapott halmazon valamilyen rank() függvénnyel (van ilyen postgresql-ben?) egy sorszám mezőt generálnék, ami dátum szerint növekvő sorrendben osztaná ki a sorszámot. Ahol a sorszám n, az a keresett dátum.
Ehhez mondjuk az is kell, hogy az ünnepnapokból és a munkanap áthelyezésekből rendelkezésre álljon egy munkanap flag ['I', 'N'] is. Ha ilyen nincs, azt mondjuk egy CASE WHEN-nel külön le kell még kezelni.
Új hozzászólás Aktív témák
Hirdetés
- LEGO klub
- sziku69: Fűzzük össze a szavakat :)
- Nintendo Switch 2
- Fujifilm X
- A fociról könnyedén, egy baráti társaságban
- Elektromos autók - motorok
- Nagy aksival és erős hardverrel megjött Magyarországra a Poco X8 Pro és Pro Max
- Apple MacBook
- Allegro vélemények - tapasztalatok
- PlayStation 5
- További aktív témák...
- szinteÚJ Lenovo ThinkPad L14 Gen5 i7 155U 24GB 1TB FHD+
- Lenovo L13 G2 Core i7 1165G7 16 Gb Ram FullHD IPS Intel Iris Boltból Számlával Garanciával
- Samsung Galaxy S25 Ultra - Titanium Gray - 12/512GB - Újszerű állapot! 2028.11-ig Samsung Jótállás
- BESZÁMÍTÁS! Asus Rog Maximus IX Hero Z270 chipset alaplap garanciával hibátlan működéssel
- Lenovo Legion 5 RYZEN 5 6600H RTX 3050Ti 4GB 16 GB DDR5 512 GB SSD FHD 165 Hz Magyar bill Gari
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



