如何获得最大和的行?

时间:2019-07-12 01:30:31

标签: ruby sqlite activerecord

我有一个technicians table,一个clients table和一个jobs table。我的技术人员模型如下:

class Technician < ActiveRecord::Base
  has_many :jobs
  has_many :clients, through: :job_orders
end

我的工作模型如下:

class Job < ActiveRecord::Base
  belongs_to :technician
  belongs_to :client
end

我的客户模型如下:

class Client < ActiveRecord::Base
  has_many :job_orders
  has_many :technicians, through: :jobs
end

我能够列出技术人员完成的工作量列表

techs = Technician.all
techs.each do |tech|
  puts "#{tech.name} has been assigned #{tech.jobs.count} jobs"
end

现在我该如何查看工作最少的技术人员或工作最多的客户?我一直在考虑按sum asc / desc进行排序,但是我仍无法解决这个问题。我使用滑轨,而只是使用带有activerecord宝石的普通旧Ruby。

1 个答案:

答案 0 :(得分:0)

Client.joins(:job_orders).order('COUNT(job_orders) DESC').group(:id).limit(1)将为您提供最多订单的客户,Technician.joins(:jobs).order('COUNT(jobs) ASC').group(:id).limit(1)将为您提供最少数量的技术员

编辑:对于<6.0的Rails版本