Ruby on Rails : DB 열에서 최대 값 얻기


125

현재 DB에서 일직선 SQL 쿼리를 만들 수 있습니다.

SELECT MAX(bar) FROM table_name

그리고 해당 테이블의 최대 값으로 반환됩니다. 그러나 Rails에서 동등한 통화라고 생각하는 것은 작동하지 않습니다. 난 전화하고있어:

Bar.all(:select => "Max(bar)")

이것은 단순히 다음과 같이 반환됩니다.

[#<Bar >]

내가 부르고있는 열에는 일련의 식별 번호가 있으며, 가장 큰 번호를 찾고 있습니다. Rails에서 이것에 접근하는 다른 방법이 있습니까?

답변:


272

모델 이름이 Bar이고 이름이 열이라고 가정하면 다음 과 bar같이 작동합니다.

Bar.maximum("bar")

자세한 내용은 계산 에 관한 훌륭한 Rails Guides 섹션을 참조하십시오 .


아하! 그렇습니다. 나는 당신이 대답하자마자 답변을 확인하겠습니다. 감사!
— 보어

6

한 가지 더

Bar.select("Max(bar) as max_bar").first.max_bar

5
왜 이렇게 하시겠습니까? 더 장황하고 정확히 같은 쿼리를 실행 Bar.maximum(:bar)
— 하므로이

19
예를 들어, 최소 및 최대를 모두 원하는 경우 :Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
— Shalev Shalit

질문하는 사람은 최대를 원했습니다.
— Chris Peters

1
그는 그 질문에 대한 정답을 제시했습니다. 아마도 가장 좋은 대답은 아니지만 그는 아무런 문제가 없었습니다.
— david0116
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.