Je vous suggère de créer une fonction à utiliser quand vous voulez et écrire moins;
Ce code ci-dessus va créer une fonction sql qui compte et retourne le nombre de jours de week-end (Sam, Dim). Juste la façon dont vous aurez plus de flexibilité pour utiliser cette fonction.
CREATE OR REPLACE FUNCTION <YourSchemaNameOptional>.count_full_weekend_days(date, date)
RETURNS bigint AS
$BODY$
select COUNT(MySerie.*) as Qtde
from (select CURRENT_DATE + i as Date, EXTRACT(DOW FROM CURRENT_DATE + i) as DiaDate
from generate_series(date ($1) - CURRENT_DATE, date ($2) - CURRENT_DATE) i) as MySerie
WHERE MySerie.DiaDate in (6,0);
$BODY$
LANGUAGE 'SQL' IMMUTABLE STRICT;
Après cela, vous pouvez utiliser la fonction pour revenir seulement le nombre de jours de week-end dans un intervalle. Voici l'exemple d'utilisation:
SELECT <YourSchemaNameOptional>.count_full_weekend_days('2017-09-11', '2017-09-25') as days; --> RES: 4
Cette sélection doit revenir à quatre parce que le premier et le deuxième jour du lundi, et nous avons 2 le samedi et le dimanche 2 entre eux.
Maintenant, pour revenir seulement jours ouvrables (sans week-end), que vous voulez, juste faire une soustraction, comme dans l'exemple ci-dessous:
SELECT (date '2017-09-25' - date '2017-09-11') - <YourSchemaName>.count_full_weekend_days('2017-09-11', '2017-09-25'); --> RES: 14 - 4 = 10