Możesz użyć dense_rank()
i arytmetyki, aby umieścić wiersze w grupach po 3:
select b.*,
ceiling(dense_rank() over (order by id) / 3)
from bibles b
Pytanie brzmi zatem, jak uzyskać daty. Na podstawie Twojego przykładu może to być:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;
Jednak - 1
zależy od tego, jaki jest pierwszy wiersz w zestawie wyników. Jeśli chcesz, aby zaczynało się od 365, to:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;