Skip to content

Instantly share code, notes, and snippets.

@airspeed
Last active March 20, 2017 14:03
Show Gist options
  • Save airspeed/221e55ec96abb84c286dd9569daa233e to your computer and use it in GitHub Desktop.
Save airspeed/221e55ec96abb84c286dd9569daa233e to your computer and use it in GitHub Desktop.
def alex( t0 = Date.yesterday, t1 = Date.tomorrow, limit = 12 )
dt = t0 .. t1
median = []
Order.where( :state => :printed.to_s, :created_at => dt ).find_each do | w |
qty = w.order_items.select{ | i | i.product_code == "CLXPXS1F" }.map( &:quantity ).sum
median << qty
end
# puts median
a1 = median.select{ | i | i < limit }.count
# Median
el = make_median( median )
# Durchschnittswert
dw = median.sum / median.count
# Unter dem Median
umedian = median.select{ | i | i < el }
# Über dem Median
omedian = median.select{ | i | i > el }
# Weit über dem Median
wmedian = median.select{ | i | ( 36 .. 50 ).include?( i ) }
[ a1, el, dw, (umedian.sum / umedian.count), (omedian.sum / omedian.count), (wmedian.sum / wmedian.count), wmedian.count ]
end
def make_median( median = [] )
median = median.sort
el = nil
if median.count.even? then
el1 = median[ ( median.count / 2 ) - 1 ]
el2 = median[ ( median.count / 2 ) ]
el = ( ( el1 + el2 ) / 2 ).round
else
el = median[ ( median.count / 2 ).floor ]
end
el
end
#alex( Date.today.beginning_of_month - 6.months )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment