Учитывая, что с помощью метки времени (которые представляют собой проверки в моем приложении) с полем временной отметки, что было бы хорошим способом определить текущую последовательность последовательных проверок?PostgreSQL: найдите число дней подряд до
Другими словами, с помощью проверок, отсортированных по времени регистрации, сколько записей осталось до тех пор, пока пользователь не пропустил день?
В настоящее время я использую эту технику:
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.
Итак, действительно ли лучший способ достичь этого?
Определите «текущий» в «текущей последовательности последовательных проверок». Вы имеете в виду полосу, включающую сегодня? Или просто последняя полоса? –
Ах да, текущая серия последовательных регистраций, включая сегодня. По существу, количество последовательных дней, включая сегодня, которые вы проверили в – yalestar