通过ActiveRecord提取多列的平均值

时间:2017-05-13 11:50:58

标签: ruby-on-rails ruby activerecord

我有一个成绩模型,我需要从中拉出两列的平均值 - 准确度和时间。我正在使用以下查询将两个值组合在一起,而不是两次查询模型。

Grade.where(student_id: 25).pluck('avg(accuracy), avg(time)')

我得到两个值,但它们采用以下格式,我不明白:

[[#<BigDecimal:7f9c5a890410,’8.0’,9(18)>, #<BigDecimal:7f9c5a8903c0,’10.0’,9(18)>]]

如何仅从中提取我需要的值?即avg_accuracy = 8.0和avg_time = 10.0

我是Ruby,Rails,ActiveRecord的新手。我很感激帮助。

1 个答案:

答案 0 :(得分:3)

grades = Grade.where(student_id: 25, class_id: 123).pluck('avg(accuracy), avg(time)').first

应该

[#<BigDecimal:7f9c5a890410,’8.0’,9(18)>, #<BigDecimal:7f9c5a8903c0,’10.0’,9(18)>]

现在将它们转换为简单浮动。

grades.map!(&:to_f)

应该

[8.0, 10.0]