2011-01-31 4 views
4

내가, 내가이 위치에 대한 DB에있는 사진의 숫자로 정렬 된 위치의 목록을 얻을 필요가 여기에이 일을 내 쿼리그룹은 3

Location.select(:city).group(:city).order("SUM(images_count) DESC").sum(:images_count) 

입니다 마치 마법처럼, 이

사람이 좀 도와 수 불행하게도, 지금은 지방 및 발생하는 모호성을 방지하기 위해 국가를 추가해야합니다, 그래서 나는 지금이

Location.select(:city, :province, :country).group(:city, :province, :country).order("SUM(images_count) DESC").sum(:images_count) 

을 그리고 이것은 :(

작동하지 않습니다 큐 유리?

답변

18

나는 내 솔루션을 매우 자랑스럽게 아니에요하지만 작동합니다

Location.group(:city, :province, :country) 
     .select(:city, :province, :country, "SUM(images_girl_count) as sum_images_count") 
     .order("sum_images_count DESC") 
     .collect{ |location| [location.city, location.province, location.country, location.sum_images_count] } 

모든 의견?

+0

감사합니다. ! 하나의 쿼리에서 그룹화하고 합산하는 것과 비슷한 문제가있었습니다. Postgres에서도 이것을 테스트 했습니까? – Chanpory

+0

그룹화가 포스트그레스에서 지옥입니다! 하지만 표준이야 ... 그래, 내 애플 리케이션은 포스트 그레스에, 그래서 이것이 작동하는지 확인합니다 – standup75

+0

그래! 훌륭한 답변입니다. 감사합니다! –

2

합 방법은 그룹화 동안 하나의 열을 사용하여,이 시도 :

Location.select(:city, :province, :country, "SUM(images_count) as sum_images_count").group(:city, :province, :country).order("sum_images_count DESC") 

그것은하지만 더 좋은 방법이 될 수 있습니다.

도움이되기를 바랍니다.

+0

아름답게 작동합니다. "as ..."없이 시도했습니다. – standup75

+0

작동합니다 ...하지만 결과에 합계가 없기 때문에, 나는 단지 도시만을 얻습니다. 지방, 국가, sum_images_count가 누락되었습니다. 어떻게받을 수 있는지 알고 계십니까? – standup75

+0

이상한데 .. 속성에 sum_images_count가 있어야합니다. 콘솔에서 해봤습니까? – jrichardlai