sql >> Base de Datos >  >> RDS >> Mysql

obtener 3 filas todos los días si se programa para 1 año

Puedes usar dense_rank() y aritmética para poner las filas en grupos de 3:

select b.*,
       ceiling(dense_rank() over (order by id) / 3)
from bibles b

La pregunta es entonces cómo obtener las fechas. Según su ejemplo, esto podría ser:

select b.*,
       '2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;

Sin embargo, el - 1 depende de cuál sea la primera fila en el conjunto de resultados. Si desea que comience en 365, entonces:

select b.*,
       '2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;