반응형
"그룹 별"카운트의 "순서"결과?
이 쿼리
Message.where("message_type = ?", "incoming").group("sender_number").count
해시를 반환합니다.
OrderedHash {"1234"=>21, "2345"=>11, "3456"=>63, "4568"=>100}
이제 각 그룹의 개수로 주문하고 싶습니다. 쿼리 내에서 어떻게 할 수 있습니까?
이를 수행하는 가장 쉬운 방법은 원래 쿼리에 order 절을 추가하는 것입니다. count 메서드에 특정 필드를 지정하면 count_ {column}이라는 이름의 출력 열이 생성되며, 주문 호출을 추가하여 생성 된 SQL에서 사용할 수 있습니다.
Message.where('message_type = ?','incoming')
.group('sender_number')
.order('count_id asc').count('id')
이것을 시도했을 때 Rails 가이 오류를주었습니다.
SQLite3::SQLException: no such column: count_id: SELECT COUNT(*) AS count_all, state AS state FROM "ideas" GROUP BY state ORDER BY count_id desc LIMIT 3
SELECT ... AS count_all로 표시됩니다.
그래서 @Simon의 답변에서 쿼리를 이렇게 업데이트했으며 저에게 효과적입니다.
.order('count_all desc')
참고 URL : https://stackoverflow.com/questions/7131109/order-by-result-of-group-by-count
반응형
'IT TIP' 카테고리의 다른 글
gemset의 이름을 어떻게 바꾸나요? (0) | 2020.11.04 |
---|---|
http를 사용하여 모바일 장치에서 서버로 Android 파일을 보내려면 어떻게합니까? (0) | 2020.11.04 |
엔터티에서 Enum을 사용할 때 쿼리 작성 문제 (0) | 2020.11.04 |
앵커 태그 대상 속성에서 _self, _top 및 _parent의 차이점 (0) | 2020.11.04 |
UILabel에서 텍스트의 하위 문자열에 대한 CGRect를 어떻게 찾습니까? (0) | 2020.11.04 |