Esto lo hará:
select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data
Tal vez sea mejor si analizo eso. La función NEXT_DAY devuelve el día siguiente que es un (viernes en este caso) después la fecha.
Entonces, para encontrar el primer viernes después de d1 sería:
next_day( d1, 'FRI')
Pero si d1 es un viernes, regresaría el viernes siguiente, entonces ajustamos:
next_day( d1-1, 'FRI')
De manera similar, para encontrar el último viernes hasta e incluyendo d2, hacemos:
next_day( d1-7, 'FRI')
Restando el 2 da un número de días:0 si son la misma fecha, 7 si están separados por una semana y así sucesivamente:
next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')
Convertir a semanas:
(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7
Finalmente, si son la misma fecha, obtenemos 0, pero realmente hay 1 viernes, y así sucesivamente, agregamos uno:
((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1