2017-01-04 1 views
0

나는 적절한 이름의 user_data 객체에 사용자 데이터를 보유하고있는 Rails 애플리케이션을 가지고있다. 지난 12 개월 동안 매월 생성 된 총 사용자 수와 활성 상태 인 사용자 수 (status = 'Active')를 보여주는 요약표를 표시하려고합니다. 내 포스트 그레스 데이터베이스에 대해 SQL에서요약 ActiveRecord를 이용한 그룹 별 요약

, 나는 (당신이 측면을 무시할 수 있도록, 내가 응용 프로그램에 의해 계산 거기에 사용하는 날짜) 나는 다음과 같은 쿼리를 원하는 결과를 얻을 수 있습니다 :

SELECT total.creation_month, 
     total.user_count AS total_count, 
     active.user_count AS active_count 
FROM 
(SELECT date_trunc('month',"creationDate") AS creation_month, 
     COUNT("userId") AS user_count 
    FROM user_data 
    WHERE "creationDate" >= to_date('2015 12 21', 'YYYY MM DD') 
    GROUP BY creation_month) AS total 
LEFT JOIN 
(SELECT date_trunc('month',"creationDate") AS creation_month, 
     COUNT("userId") AS user_count 
    FROM user_data 
    WHERE "creationDate" >= to_date('2015 12 21', 'YYYY MM DD') 
    AND status = 'Active' 
    GROUP BY creation_month) AS active 
ON total.creation_month = active.creation_month 
ORDER BY creation_month ASC 

ActiveRecord와 함께이 쿼리를 작성하려면 어떻게해야합니까?

이전에는 전체 사용자 수가 월별로 그룹화되어 표시되었지만 활성 사용자 수의 추가 열을 추가하는 방법에 어려움을 겪고 있습니다.

내 응용 프로그램은 Ruby 2.1.4 및 Rails 4.1.6을 사용합니다.

답변

0

나는 ActiveRecord 방식으로이 작업을 시도했다. 대신 난 그냥 문자열로 내 쿼리를 건설하고

이 내 결과 세트는 배열 대신 객체의 집합으로 나온 부작용이 있었다
ActiveRecord::Base.connection.execute(sql_string) 

로 문자열을 통과시켰다. 그래서 값에 점점이

user_data['total_count'] 

user_data.total_count 

같은 (_ 데이터는 결과 집합에서 하나의 레코드에 할당 된 이름입니다) 구문에서 갔다 그러나 그것은 사소한 문제입니다. 번거롭게 할 가치가 없습니다.