Du kan använda dense_rank()
och aritmetik för att sätta raderna i grupper om 3:
select b.*,
ceiling(dense_rank() over (order by id) / 3)
from bibles b
Frågan är då hur man får tag i datumen. Baserat på ditt exempel kan detta vara:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;
Men - 1
beror på vad den första raden är i resultatuppsättningen. Om du vill att den ska börja på 365, då:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;