Sha256: a0320ea9fd14953ad42f55d7801e8213ecfc503e6b48086c21a54df74b1614e5
Contents?: true
Size: 1.03 KB
Versions: 3
Compression:
Stored size: 1.03 KB
Contents
# weighted_average Do weighted averages in ARel. ## Rationale You have a bunch of flight records with passenger count and distance. * Flight EWR <-> MSN; 30,000 passengers last month; 500 miles * Flight EWR <-> BOM; 15 passengers last month; 10,000 miles The average distance is <tt>(10_000 + 500) / 2 = 5250</tt>. The average distance weighted by passenger count is <tt>(30_000 * 500 + 15 * 10_000) / (10_500) = 1442</tt>. ## Usage Using <tt>FlightSegment</tt> from [Brighter Planet's earth library](http://rubygems.org/gems/earth): >> FlightSegment.weighted_average(:distance, :weighted_by => :passengers) => 2436.1959 You can also see the SQL that is generated: >> FlightSegment.weighted_average_relation(:distance, :weighted_by => :passengers).to_sql => "SELECT (SUM((`flight_segments`.`distance`) * `flight_segments`.`passengers`) / SUM(`flight_segments`.`passengers`)) AS weighted_average FROM `flight_segments` WHERE (`flight_segments`.`distance` IS NOT NULL)" ## Copyright Copyright (c) 2012 Brighter Planet, Inc.
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
weighted_average-2.0.2 | README.markdown |
weighted_average-2.0.1 | README.markdown |
weighted_average-2.0.0 | README.markdown |