class ActiveMedian::SQLiteHandler
Public Class Methods
arity()
click to toggle source
# File lib/active_median/sqlite_handler.rb, line 3 def self.arity 2 end
name()
click to toggle source
# File lib/active_median/sqlite_handler.rb, line 7 def self.name "percentile" end
new()
click to toggle source
# File lib/active_median/sqlite_handler.rb, line 11 def initialize @values = [] @percentile = nil end
Public Instance Methods
finalize(ctx)
click to toggle source
# File lib/active_median/sqlite_handler.rb, line 27 def finalize(ctx) if @values.any? ctx.result = @values.percentile(@percentile / 100.0) end end
step(ctx, value, percentile)
click to toggle source
skip checks for
-
percentile between 0 and 100
-
percentile same for all rows
since input is already checked
# File lib/active_median/sqlite_handler.rb, line 20 def step(ctx, value, percentile) return if value.nil? raise ActiveRecord::StatementInvalid, "1st argument to percentile() is not numeric" unless value.is_a?(Numeric) @percentile ||= percentile @values << value end