Dit zal het doen:
select ((next_day(date2-7,'FRI')-next_day(date-1,'FRI'))/7)+1 as num_fridays
from data
Misschien het beste als ik dat doorbreek. De functie NEXT_DAY retourneert de volgende dag die (in dit geval vrijdag) na is de datum.
Dus om de eerste vrijdag na d1 te vinden zou zijn:
next_day( d1, 'FRI')
Maar als d1 een vrijdag is die de volgende vrijdag zou terugkeren, passen we het volgende aan:
next_day( d1-1, 'FRI')
Op dezelfde manier vinden we de laatste vrijdag tot en met d2:
next_day( d1-7, 'FRI')
Door de 2 af te trekken krijg je een aantal dagen:0 als ze op dezelfde datum vallen, 7 als ze een week uit elkaar liggen enzovoort:
next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')
Converteren naar weken:
(next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7
Ten slotte, als ze dezelfde datum hebben, krijgen we 0, maar in werkelijkheid is er 1 vrijdag, enzovoort, dus voegen we er een toe:
((next_day( d1-7, 'FRI') - next_day( d1-1, 'FRI')) / 7) + 1