Можете да използвате dense_rank()
и аритметика, за да поставите редовете в групи от 3:
select b.*,
ceiling(dense_rank() over (order by id) / 3)
from bibles b
Тогава въпросът е как да се получат датите. Въз основа на вашия пример това може да бъде:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;
Въпреки това, - 1
зависи от това какъв е първият ред в резултатния набор. Ако искате да започне от 365, тогава:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;