Sie können dense_rank()
verwenden und Arithmetik, um die Zeilen in Gruppen von 3 zu setzen:
select b.*,
ceiling(dense_rank() over (order by id) / 3)
from bibles b
Die Frage ist dann, wie man die Daten bekommt. Basierend auf Ihrem Beispiel könnte dies sein:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;
Allerdings ist die - 1
hängt davon ab, was die erste Zeile in der Ergebnismenge ist. Wenn Sie möchten, dass es bei 365 beginnt, dann:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;