У меня есть требование, когда мне нужно рассчитать среднее количество единиц, проданных для продукта, на основе компании, в которой они были проданы. Оттуда я буду рассчитывать процентную разницу с проданной единицей. В нем есть одна модель с продуктами. Каждый продукт имеет атрибуты:Вычислить среднее условно на основе атрибута
- PRODUCT_NAME
- unit_sold
- компания
Есть много компаний.
Этот код работает для расчета среднего значения по всем записям, однако я бы хотел рассчитать среднее условие, основанное на атрибуте «компания».
def average_UnitSold
self.class.average(:unit_sold)
end
def averagechange_UnitSold
(self.unit_sold - average_UnitSold)/average_UnitSold * 100
end
я придумал, но это не работает:
def average_UnitSold
self.class.sum(:unit_sold), :conditions => "company = self.company"))/:unit_sold
end
Любые идеи?
В другом примечании, является более жизнеспособным подходом, где хранятся все эти средние значения и только обновление их на ежедневной основе более эффективно?
На основании ответа, я уже реализовал этот код, и это похоже на работу:
def self.average_unit_sold(company)
where(company: company).average(:unit_sold)
end
def average_unit_sold
self.class.average_unit_sold(self.company)
end
def averagechange_UnitSold
(self.unit_sold - average_unit_sold)/average_unit_sold * 100
end
У вас есть какая-либо ассоциация между вашим модели? Это сделало бы вещи удивительно простыми. –
Эй есть только одна модель для этого – bnussey
нет модели 'Company'? Странно. Структура данных подсказывает это. @infused показал, что я имею в виду в его ответе. –