How to do select with sum?

Is there a way to rewrite the following Model method avoiding connection.select?

class LineOrder < ActivateRecord::Base belongs_to :auction belongs_to :operation

... def self.amounts_by_year(search)   search_company = ""   if search      search_company = "inner join auctions on line_orders.auction_id=auctions.id where company LIKE "        + "'%#{search}%'"   end   connection.select_all("select year(date) as YD,     sum(if(operation_id != 2, gross_price, NULL)) as BGP,     sum(if(operation_id != 2, costs, NULL)) as BC,     sum(if(operation_id != 2, net_price, NULL)) as BNP,     sum(if(operation_id = 2, gross_price, NULL)) as SGP,     sum(if(operation_id = 2, costs, NULL)) as SC,     sum(if(operation_id = 2, net_price, NULL)) as SNP     from line_orders " + "#{search_company} " + "group by year(date)") end

To fix the idea:

The method is used in the index view to show at user's will the amounts by year either of a given auction or of all auctions, depending if the user has chosen to restrict the list to a particular auction or not.

search is then the variable which is passed from the view to the model to get the scope on which the method will be applied.

company is a field of the auction Model.

gross_price, costs, net_price are entered unsigned for user's convenience. Hence they need to be separated afterwards depending on the operation_id.

I am interested in this also. Sorry don’t have any ideas as I am to new to RoR myself