划分2个查询语句的列表

时间:2015-11-18 19:32:57

标签: mysql ruby-on-rails

我有一些查询语句,我想通过基本上做top_level_comment_count.fdiv(code_review_assigned_count).round(2)

来取平均值

以下是我的2个查询语句:

top_level_comment_count = CrucibleComment.group(:user_id).where(parent_comment_id: nil).count
code_review_assigned_count = Reviewer.group(:user_id).count

这两个都返回如下内容:

 40=>5,
 41=>1,
 43=>4,
 44=>10,
 45=>2,
 46=>13,
 48=>7,
 50=>7,
 51=>6,
 52=>5,
 54=>7,
 55=>41,
 56=>2,
 58=>21,
 60=>7,
 61=>8,
 62=>3,
 63=>1,

所以,我想要做的是:如果:user_ids是相同的,取平均值。 我的def目前看起来像这样:

  def self.average_top_level_comments
    a = CrucibleComment.group(:user_id).where(parent_comment_id: nil).count
    b = Reviewer.group(:user_id).count
  end

换句话说,我想做这个陈述:

return nil unless code_review_assigned_count && top_level_comment_count
top_level_comment_count.fdiv(code_review_assigned_count).round(2)

一组数字。我怎么能这样做?

For example:
id:40 => 5.0/3.3
id: 41 => 1/2.2
id: 43 => 4 /1.0

1 个答案:

答案 0 :(得分:0)

我建议使用inject

像: division_result = top_level_comment_count.inject({}) do |result, item| id = item.first count = item.last result[id] = count.to_f / code_review_assigned_count[id] result end

这将返回一个散列,其中ID作为键,分区的结果作为值。