Puedes usar dense_rank()
y aritmética para poner las filas en grupos de 3:
select b.*,
ceiling(dense_rank() over (order by id) / 3)
from bibles b
La pregunta es entonces cómo obtener las fechas. Según su ejemplo, esto podría ser:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;
Sin embargo, el - 1
depende de cuál sea la primera fila en el conjunto de resultados. Si desea que comience en 365, entonces:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;