У меня есть таблица ORDEREXECUTIONS, в которой хранятся все выполненные заказы.Это мультивалютное приложение, поэтому в таблице есть два столбца CURRENCY1_ID и CURRENCY2_ID.
Чтобы получить список всех ордеров для конкретной валютной пары (например, EUR / USD), мне нужны строки для получения итогов:
v = Orderexecution.where("is_master=1 and currency1_id=? and currency2_id=? and created_at>=?",c1,c2,Time.now()-24.hours).sum("quantity").to_d
v+= Orderexecution.where("is_master=1 and currency1_id=? and currency2_id=? and created_at>=?",c2,c1,Time.now()-24.hours).sum("unitprice*quantity").to_d
Обратите внимание, что моя формула SUM ()отличается в зависимости от последовательности валют.Например, если я хочу получить общее количество заказов по валютной паре USD, то оно выполняется (при условии, что идентификатор валюты для USD равен 1, а EUR равен 2.
v = Orderexecution.where("is_master=1 and currency1_id=? and currency2_id=? and created_at>=?",1,2,Time.now()-24.hours).sum("quantity").to_d
v+= Orderexecution.where("is_master=1 and currency1_id=? and currency2_id=? and created_at>=?",2,1,Time.now()-24.hours).sum("unitprice*quantity").to_d
Как мне записать это в RoR, чтобы оно вызывало толькоодин оператор SQL для MySQL?