정수 열 no_of_units
및 average_revenue_per_unit
이있는 테이블이 있다고 가정 해 보겠습니다. 한 행에 대한 총 수익을 얻으려면 no_of_units * average_revenue_per_unit
을 계산하면됩니다. 그러나 전체 테이블의 총 수익을 계산하려면 어떻게해야합니까?ActiveRecord 쿼리를 사용하여 한 열의 합계에 다른 열의 합을 곱합니다.
확실한 방법은 다음과 같습니다
total_no_of_units = TableName.sum(:units)
overall_average_revenue = TableName.average(:revenue_per_unit)
total_revenue = total_no_of_units * overall_average_revenue
그러나 두 개의 별도의 SQL 쿼리를 사용하지 구역질을 느낀다. 하나의 연속 된 ActiveRecord 쿼리로이 작업을 수행 할 수있는 방법이 있습니까? 또는 원시 SQL을 사용하여 수행 할 수 있습니까?
편집 : 방금 위의 샘플 코드가 잘못되었다는 것을 깨달았습니다! overall_average_revenue
은 revenue_per_unit
열의 모든 정수의 평균입니다. 그러나 행마다 다른 수의 단위가 있기 때문에 이것은 단위당 실제 평균 수익과 동일하지 않습니다. 가중 평균이 필요해. 드로잉 보드로 돌아 가기 ...
이것은 내 원래 질문에 대한 정답입니다 ...하지만 내 질문에 결함이 있으며 실제 평균 수익을 내지 못한다는 사실을 깨달았습니다. (내 편집 내 질문 참조). 어쨌든 upvote 있으십시오 ... – GMA