Cela le fera :
select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data
Peut-être mieux si je décompose ça. La fonction NEXT_DAY renvoie le jour suivant qui est un (vendredi dans ce cas) après la date.
Donc, pour trouver le premier vendredi après d1, ce serait :
next_day( d1, 'FRI')
Mais si d1 est un vendredi qui reviendrait le vendredi suivant, alors on ajuste :
next_day( d1-1, 'FRI')
De même, pour trouver le dernier vendredi jusqu'au d2 inclus, nous faisons :
next_day( d1-7, 'FRI')
Soustraire les 2 donne un nombre de jours :0 s'ils sont à la même date, 7 s'ils sont à une semaine d'intervalle et ainsi de suite :
next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')
Convertir en semaines :
(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7
Enfin, s'ils sont à la même date on obtient 0, mais en réalité il y a 1 vendredi, et ainsi de suite donc on en ajoute un :
((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1