레일스에서 코호트 분석 쿼리를 수행하려고하지만 마지막 작업 날짜별로 그룹화하는 올바른 방법으로 문제가 발생합니다.레일스 코호트 분석
나는 이런 일에 대해 다음 데이터 행과 함께 종료 할 : 작년에 등록 된 모든 사용자에 대해 http://www.quickcohort.com/
count first_action last_action
. first_action
및 last_action
은 가장 가까운 달로 잘립니다.
first_action
별로 그룹화 수를 얻는 것은 충분히 쉽게,하지만 난 확장하려고 할 때 그것은 last_action
내가
ActiveRecord::StatementInvalid: PGError: ERROR: aggregates not allowed in GROUP BY clause
가 발생하는 등 여기에 지금까지
User
.select("COUNT(*) AS count,
date_trunc('month', users.created_at) AS first_action,
MAX(date_trunc('month', visits.created_at)) AS last_action # <= Problem
")
.joins(:visits)
.group("first_action, last_action") # TODO: Subquery ?
.order("first_action ASC, last_action ASC")
.where("users.created_at >= date_trunc('month', CAST(? AS timestamp))", 12.months.ago)
방문이 무엇을 표는 사용자가 사이트를 방문한 모든 방문을 추적합니다. 가장 최근의 방문을 마지막 작업으로 사용하는 것이 쉬운 것처럼 보이지만 SQL로 변환하는 데 문제가 있습니다.
더 좋은 방법이 있다면 다른 솔루션에도 열려 있지만 단일 SQL 쿼리가 가장 효과적 인 것처럼 보입니다.