Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Rufen Sie jeden Tag 3 Zeilen ab, wenn Sie für 1 Jahr planen

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;