ActiveRecord GROUP, LIMIT, ORDER

Czesc,

Mam tabele zawierajaca wartosci spolek, spolki zawieraja oprocz wartosci, rowniez nazwe symbolu gieldy (stock_name).

Chce pobrac 5 spolek o najwyzszym spadku pogrupowanych wedlug gield. Czyli dla kazdej gieldy chce wybrac spolke o najwyzszym spadku.

@loosers = StockQuote.find(:all,  :group => "stock_name",:order => "change_percent ASC", :limit => 5)

nie dziala.

Jest jakas sprytna metoda AR ktora to zalatwi ? LIMIT 5 podaje dlatego ze mam wiecej niz 5 gield, a potrzebuje maksymalnie pobrac 5 wynikow.

Pozdrawiam

Nie mam teraz czasu na pisanie czegoś więcej, ale możesz na początek spojrzeć tutaj: http://www.rubyonrails.pl/forum/p8713-2009-03-08-14%3A13%3A14#p8713 - podałem tam trochę przykładów.

Dziekuje @drogus, podales

User.find(:all, :joins => "INNER JOIN ( SELECT COUNT(id) as count, user_id FROM opinions GROUP BY user_id ) AS opinions ON users.id = opinions.user_id, :order => "opinions.count DESC")
Ja mam

@loosers = StockQuote.find(:all, :joins => "INNER JOIN ( SELECT MIN(change_percent) AS change_percent, id FROM stock_quotes GROUP BY stock_name ) AS sq ON sq.id = stock_quotes.id", :order => "change_percent ASC", :limit => 5)
Wyglada na to ze dziala