module NoBrainer::Criteria::Aggregate
Public Instance Methods
avg(*a, &b)
click to toggle source
# File lib/no_brainer/criteria/aggregate.rb, line 16 def avg(*a, &b) run { aggregate_rql(:avg, *a, &b) } end
max(*a, &b)
click to toggle source
# File lib/no_brainer/criteria/aggregate.rb, line 8 def max(*a, &b) order_by(a, &b).last end
min(*a, &b)
click to toggle source
# File lib/no_brainer/criteria/aggregate.rb, line 4 def min(*a, &b) order_by(a, &b).first end
sum(*a, &b)
click to toggle source
# File lib/no_brainer/criteria/aggregate.rb, line 12 def sum(*a, &b) run { aggregate_rql(:sum, *a, &b) } end
Private Instance Methods
aggregate_rql(type, *a, &b)
click to toggle source
# File lib/no_brainer/criteria/aggregate.rb, line 22 def aggregate_rql(type, *a, &b) rql = without_ordering.without_plucking.to_rql rql = rql.__send__(type, *model.with_fields_aliased(a), &b) rql = rql.default(nil) unless type == :sum rql end