2014-12-12 4 views
0

테이블에서 고유 한 웹 사이트 수, 각 웹 사이트의 레코드 수 및 고유 한 수를 추출하는 다음 SQL 쿼리가 있습니다. 각 웹 사이트를 방문한 사용자 테이블은 같이 배치SQL/Rails는 레코드 그룹에서 고유 한 값의 수를 반환합니다.

"SELECT title, COUNT(DISTINCT user_id), COUNT(title) FROM weblogs GROUP BY title" 

다음 :

weblog_id | title | user_id 
--------------------------- 
1   | BBC | 1 
2   | BBC | 1 
3   | BBC | 2 
4   | Sky | 1 
5   | Sky | 1 

상기 쿼리 반환 :

title | COUNT(DISTINCT user_id) | COUNT(title) 
--------------------------------------------------- 
BBC  | 2       | 3 
Sky  | 1       | 2 

을이 exec_query를 사용하여 레일의 SQL 스트링을 실행함으로써, 현재의 형태에서 작동하는 동안 , 나는 Rails의 질의 메소드를 사용하여 동일한 결과를 재현하려고 애썼다 (나는 레일즈 개발자가 아니지만 레일즈에서 일해야한다). Rails 메서드를 사용하여이 쿼리를 작성하는 방법에 대한 아이디어가 있습니까?

편집

나는 두 개의 별도의 쿼리를 사용하여 개별 전체 웹 사이트 히트 수와 웹 사이트 순 사용자를 추출 할 수 있습니다. 다음은 각 웹 사이트

weblogs.all.group(title).count 

의 수를 제공합니다 그리고 다음은 각 웹 사이트에 대한 고유 한 사용자의 수를 제공합니다

weblogs.all.group(title).distinct.count(user_id) 

이 거기에 하나 개의 쿼리로 이러한 결합하는 방법을?

답변

2

이 작동합니다 :

weblogs.all.group(title).select("COUNT(DISTINCT user_id), COUNT(title), title") 

또한 내가 찾던 정확히 사용자 지정 SQL 쿼리 Rails 3 execute custom sql query without a model

+0

매우 감사 실행할 수 있습니다. 나는 Railsy와 SQL을 조금 더 보일 것으로 예상했다. – bjpelcdev

관련 문제