1

假設我有一個整數列爲no_of_unitsaverage_revenue_per_unit的表格。要獲得任意一行的總收入,我只需要計算no_of_units * average_revenue_per_unit - 很簡單。但是如果我想計算整個表的總收入呢?使用ActiveRecord查詢獲得一列乘以另一列的總和

最顯而易見的方法是:

total_no_of_units = TableName.sum(:units) 
overall_average_revenue = TableName.average(:revenue_per_unit) 
total_revenue = total_no_of_units * overall_average_revenue 

但不必使用兩個單獨的SQL查詢感覺噁心。有沒有辦法只用一個鏈接的ActiveRecord查詢呢?或者我可以(也應該)使用原始SQL執行此操作嗎?

編輯:我剛剛意識到我的上述示例代碼是錯誤的! overall_average_revenuerevenue_per_unit列中所有整數的平均值......但這與實際的單位平均收入不同,因爲不同的行具有不同的單位數。我需要一個加權平均值。回到繪圖板...

回答

2

這將工作,雖然它是一個原始的SQL。

TableName.pluck('sum(units) * avg(revenue_per_unit)').first 
+0

這是我原來的問題的正確答案......但我剛剛意識到我的問題是有缺陷的,這並沒有給實際的平均收入! (請參閱我的編輯問題)。無論如何,請有一個upvote ... – GMA

相關問題