Ruby on Rails: pobieranie maksymalnej wartości z kolumny DB


125

Obecnie mogę wykonać proste zapytanie SQL w mojej bazie danych:

SELECT MAX(bar) FROM table_name

I wraca z maksymalną wartością w tej tabeli. Kiedy jednak wykonuję to, co uważam za równoważne wywołanie w Railsach, to nie działa. Dzwonię:

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

To po prostu wraca z:

[#<Bar >]

W kolumnie, do której dzwonię, jest seria numerów identyfikacyjnych, szukam największej. Czy jest inny sposób uzyskania dostępu do tego w Railsach?

Odpowiedzi:



6

jeszcze jeden sposób

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

5
Dlaczego chcesz to zrobić? Bardziej szczegółowe i wykonuje dokładnie to samo zapytanie, co Bar.maximum(:bar)więc nie widzę powodu, aby w ogóle „polecać” tę odpowiedź ...
nathanvda

19
na przykład, jeśli chcesz, aby zarówno wartość minimalna, jak i maksymalna:Bar.select("MAX(bar) max_bar, MIN(bar) min_bat").first.attributes
Shalev Shalit

Osoba zadająca pytanie chciała tylko max.
Chris Peters,

1
Udzielił poprawnej odpowiedzi na pytanie. Prawdopodobnie nie jest to najlepsza odpowiedź, ale nie zrobił z nią nic złego.
david0116
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.