Questo lo farà:
select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data
Forse è meglio se lo abbatto. La funzione NEXT_DAY restituisce il giorno successivo che è un (venerdì in questo caso) dopo la data.
Quindi per trovare il primo venerdì dopo d1 sarebbe:
next_day( d1, 'FRI')
Ma se d1 è un venerdì che ritornerebbe il venerdì successivo, quindi aggiustiamo:
next_day( d1-1, 'FRI')
Allo stesso modo, per trovare l'ultimo venerdì fino a d2 incluso, facciamo:
next_day( d1-7, 'FRI')
Sottraendo il 2 si ottiene un numero di giorni:0 se sono la stessa data, 7 se sono a distanza di una settimana e così via:
next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')
Converti in settimane:
(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7
Infine, se sono la stessa data otteniamo 0, ma in realtà c'è 1 venerdì, e così via ne aggiungiamo uno:
((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1