結合したモデルの集計を行う

class TestController < ApplicationController
  def index
    @employees_with_sales = Employee.left_joins(:sales)
        .select("employees.id, employees.name, sales.sales_date AS sales_date, SUM(sales.amount) AS total_sales")
        .group("employees.id, sales.sales_date")
        .order("employees.id, sales.sales_date")
  end
end
上の例では、EmployeeモデルとSaleモデルを結合し、EmployeeモデルのidとSaleモデルのsales_dateフィールドでグルーピングし、Employeeモデルのidとname、Salesモデルのsales_dateフィールドを取得し、グルーピングされたSalesモデルのamountフィールドの合計をtotal_salesフィールドとして追加し、Employeeモデルのid、Salesモデルのsales_dateフィールドで昇順に並べ替えています。