Вы, похоже, храните даты в виде строк. Вы должны обязательно исправить этот недостаток дизайна.
Чтобы заказать запись, вам нужно связать строки с датами. Для этого вы можете использовать str_to_date()
. Вы можете вычислить числа, используя row_number()
и простую арифметику:
select
date,
1 + floor((row_number() over(order by str_to_date(date, '%d/%b/%Y')) - 1) / 5) rn
from mytable
order by str_to_date(date, '%d/%b/%Y')
В более старых версиях MySQL вы можете использовать переменную:
select date, 1 + floor((@rn := @rn + 1) / 5) rn
from (
select date, str_to_date(date, '%d/%b/%Y') real_date
from mytable
order by real_date
) t
cross join (select @rn := -1) x