SQL kérdések - Szoftverfejlesztés fórum

üzenetek

hozzászólások


bambano
(titán)
Blog

én is megcsináltam, még éjjel :)

with naptar as (
select napok,
(case when date_part('dow',napok) between 1 and 5 then 1 else 0 end)::integer
*
(case when calendar.date is null then 1 else 0 end)::integer as isworkday
from
generate_series(now()::date,now()::date+'60 days'::interval,'1 day'::interval) as napok
left outer join
calendar on napok=calendar.date)
select napok::date,-1+sum(isworkday) over (order by napok) as workdays
from naptar where isworkday=1;

kb. ennyi az alap, ebből lehet közvetlen lekérdezést csinálni vagy window funkcióval és rownumberrel, vagy én csináltam belőle egy view-t és abból közvetlenül lehet selectelni.

egy rakás lehetséges optimalizáció még van benne, például a két case helyett lehetne egyet, stb.

üzenetek