Учитывая кучу записей (которые представляют проверки в моем приложении) с полем отметки времени, что было бы хорошим способом определить текущую серию последовательных проверок?
Другими словами, если количество проверок отсортировано по убыванию, сколько записей осталось до тех пор, пока пользователь не пропустил день?
В настоящее время я использую эту технику:
SELECT distinct(uca.created_at::date) as created_at
FROM user_challenge_activities as uca INNER JOIN user_challenges as uc
ON user_challenge_id = uc.ID WHERE uc.user_id = #{user.id}
order by (uca.created_at::date) DESC;
... где я приведу отметки времени регистрации к дате (в итоге, например, 2012-03-20), затем в коде просматриваю записи и увеличиваю счетчик до даты между записью и следующей записью больше 1 дня.
Тем не менее, этот подход кажется мне неуклюжим, и кажется, что Postgres преуспел бы в этом.
Так есть ли на самом деле лучший способ сделать это?