SQL Dojo Bêta
Technique

Compter les jours ouvrés

Construire les jours ouvrés une fois (ni week-end ni férié), puis les compter entre deux dates.

generate_series sur la période, EXTRACT(ISODOW FROM day) <= 5, et NOT EXISTS un jour férié : voilà le calendrier. Comptez ses jours avec day > début AND day <= fin. Le raccourci « jours de semaine moins jours fériés » retire deux fois un férié qui tombe un week-end. Les vrais projets gardent le calendrier dans une table, avec is_business_day par pays.

WITH days AS (
  SELECT CAST(d AS DATE) AS day
  FROM generate_series(DATE '2025-12-22', DATE '2025-12-31', INTERVAL '1 day') AS t(d)
),
holidays(day) AS (VALUES (DATE '2025-12-25'))
SELECT COUNT(*) AS calendar_days,
       SUM(CASE WHEN EXTRACT(ISODOW FROM day) <= 5
                 AND day NOT IN (SELECT day FROM holidays) THEN 1 ELSE 0 END) AS business_days
FROM days;
calendar_daysbusiness_days
107
L’essayer en Randori