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;