Bạn có thể sử dụng dense_rank()
và số học để xếp các hàng thành nhóm 3:
select b.*,
ceiling(dense_rank() over (order by id) / 3)
from bibles b
Câu hỏi đặt ra là làm thế nào để lấy được ngày tháng. Dựa trên ví dụ của bạn, đây có thể là:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;
Tuy nhiên, - 1
phụ thuộc vào hàng đầu tiên trong tập kết quả. Nếu bạn muốn nó bắt đầu ở 365, thì:
select b.*,
'2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;