Isaac가 그 부분을 확인하는 동안, 재미있는 추가 팁으로 user_id 파라미터를 사용하면 깔끔한 자동완성 파라미터 상자를 얻을 수 있습니다. 예:
-- [params]
-- user_id :user
-- int :min_days = 10
WITH consecutive_visits AS (
SELECT user_id,
visited_at,
-- s의 값은 연속된 각 날짜 그룹마다 동일합니다
visited_at - (DENSE_RANK() OVER (PARTITION BY user_id ORDER BY visited_at))::int s
FROM user_visits
WHERE user_id = :user
)
SELECT
MIN(visited_at) period_start,
COUNT(*) AS consecutive_days,
MAX(visited_at) period_end
FROM consecutive_visits
GROUP BY user_id, s
HAVING COUNT(*) >= :min_days
ORDER BY period_start DESC