Rails组收集并汇总某些字段

时间:2019-01-16 15:46:27

标签: mysql ruby-on-rails ruby ruby-on-rails-4

Rails的新手,但是我找不到此功能!

说您有一组发票,其中包括ID,公司名称和发票总额。由于某些原因,存在多个具有相同名称的公司。您要创建一个1xn矩阵,其中每行包含具有唯一公司名称的公司数据。

如何将具有相同名称的公司分组在一起,并将其发票总额相加。您不必关心将哪个ID保存到该行。是使用Group + Map的唯一方法吗?

例如

[1523, 'Red Roses Inc', 1300.00],
[4126, 'Blue Birds LLC', 110.00],
[846, 'Red Roses Inc', 400.00],

成为

[1523, 'Red Roses Inc', 1700.00],
[846, 'Blue Birds LLC', 110.00],

1 个答案:

答案 0 :(得分:3)

例如,如果公司和发票在一个表中,则您的模型是发票

Invoice.group(:company_name).sum(:total)

# sample implementation how to get data and print the result

data_result = Invoice.group(:company_name).sum(:total) 

data_result.each do |v|
  puts "company #{v[0]} total number #{v[1]}"
end

# this will print
# company Red Roses Inc total number 1700
# company Blue Birds LLC total number 110