module Aggrobot::SQLFunctions::Common
Public Instance Methods
asc(attr)
click to toggle source
# File lib/aggrobot/sql_functions/common.rb, line 11 def asc(attr) "#{attr} asc" end
avg(attr, rounding = self.precision)
click to toggle source
returns ROUNDED average of attr, with precision(ROUNDING DIGITS)
# File lib/aggrobot/sql_functions/common.rb, line 36 def avg(attr, rounding = self.precision) "ROUND(AVG(#{attr}), #{rounding})" end
Also aliased as: average
count(attr = '*')
click to toggle source
# File lib/aggrobot/sql_functions/common.rb, line 15 def count(attr = '*') "COUNT(#{attr})" end
desc(attr)
click to toggle source
# File lib/aggrobot/sql_functions/common.rb, line 7 def desc(attr) "#{attr} desc" end
divide(attr, divider, rounding = self.precision)
click to toggle source
returns ROUND of attr/divider, with precision(self.precision)
# File lib/aggrobot/sql_functions/common.rb, line 59 def divide(attr, divider, rounding = self.precision) "ROUND(#{attr}/#{divider}, #{rounding})" end
group_collect(attr)
click to toggle source
GROUP_CONCAT: A SQL function which returns a concatenated string group_collect
returns concatenated string of distinct attr
# File lib/aggrobot/sql_functions/common.rb, line 44 def group_collect(attr) "GROUP_CONCAT(DISTINCT #{attr})" end
max(attr)
click to toggle source
# File lib/aggrobot/sql_functions/common.rb, line 23 def max(attr) "MAX(#{attr})" end
min(attr)
click to toggle source
# File lib/aggrobot/sql_functions/common.rb, line 27 def min(attr) "MIN(#{attr})" end
multiply(attr, multiplier, rounding = self.precision)
click to toggle source
returns ROUND of multipliers, with precision(self.precision)
# File lib/aggrobot/sql_functions/common.rb, line 54 def multiply(attr, multiplier, rounding = self.precision) "ROUND(#{attr}*#{multiplier}, #{rounding})" end
percent(total, attr = count, rounding = self.precision)
click to toggle source
returns percentage based on ROUND SQL function, with precision(ROUNDING DIGITS)
# File lib/aggrobot/sql_functions/common.rb, line 49 def percent(total, attr = count, rounding = self.precision) total == 0 ? "0" : "ROUND((#{attr}*100.0)/#{total}, #{rounding})" end
sum(attr = count)
click to toggle source
# File lib/aggrobot/sql_functions/common.rb, line 31 def sum(attr = count) "SUM(#{attr})" end
unique_count(attr = '*')
click to toggle source
# File lib/aggrobot/sql_functions/common.rb, line 19 def unique_count(attr = '*') "COUNT(DISTINCT #{attr})" end