tôi có phương pháp như thế này:Làm thế nào để tránh PG :: NumericValueOutOfRange khi sử dụng chức năng tổng
def self.weighted_average(column)
sql = "SUM(#{column} * market_cap)/SUM(market_cap) as weighted_average"
Company.select(sql).to_a.first.weighted_average
end
Khi cột là một decimal
, nó sẽ trả về một giá trị mà không có vấn đề. Nhưng khi cột là integer
, phương pháp kết thúc bằng lỗi PG::NumericValueOutOfRange
.
Tôi có nên thay đổi loại cột integer
thành decimal
hoặc có cách nào để nhận kết quả của sum
mà không thay đổi loại cột không?
'column' là tên cột của mô hình. Đó chỉ là 'String' hoặc' Symbol'. – ironsand