Module: Aggrobot::SQLFunctions::Common

Defined in:
lib/aggrobot/sql_functions/common.rb

Instance Method Summary collapse

Instance Method Details

#asc(attr) ⇒ Object



11
12
13
# File 'lib/aggrobot/sql_functions/common.rb', line 11

def asc(attr)
  "#{attr} asc"
end

#avg(attr, rounding = self.precision) ⇒ Object Also known as: average

returns ROUNDED average of attr, with precision(ROUNDING DIGITS)



36
37
38
# File 'lib/aggrobot/sql_functions/common.rb', line 36

def avg(attr, rounding = self.precision)
  "ROUND(AVG(#{attr}), #{rounding})"
end

#count(attr = '*') ⇒ Object



15
16
17
# File 'lib/aggrobot/sql_functions/common.rb', line 15

def count(attr = '*')
  "COUNT(#{attr})"
end

#desc(attr) ⇒ Object



7
8
9
# File 'lib/aggrobot/sql_functions/common.rb', line 7

def desc(attr)
  "#{attr} desc"
end

#divide(attr, divider, rounding = self.precision) ⇒ Object

returns ROUND of attr/divider, with precision(self.precision)



59
60
61
# File 'lib/aggrobot/sql_functions/common.rb', line 59

def divide(attr, divider, rounding = self.precision)
  "ROUND(#{attr}/#{divider}, #{rounding})"
end

#group_collect(attr) ⇒ Object

GROUP_CONCAT: A SQL function which returns a concatenated string group_collect returns concatenated string of distinct attr



44
45
46
# File 'lib/aggrobot/sql_functions/common.rb', line 44

def group_collect(attr)
  "GROUP_CONCAT(DISTINCT #{attr})"
end

#max(attr) ⇒ Object



23
24
25
# File 'lib/aggrobot/sql_functions/common.rb', line 23

def max(attr)
  "MAX(#{attr})"
end

#min(attr) ⇒ Object



27
28
29
# File 'lib/aggrobot/sql_functions/common.rb', line 27

def min(attr)
  "MIN(#{attr})"
end

#multiply(attr, multiplier, rounding = self.precision) ⇒ Object

returns ROUND of multipliers, with precision(self.precision)



54
55
56
# 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) ⇒ Object

returns percentage based on ROUND SQL function, with precision(ROUNDING DIGITS)



49
50
51
# 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) ⇒ Object



31
32
33
# File 'lib/aggrobot/sql_functions/common.rb', line 31

def sum(attr = count)
  "SUM(#{attr})"
end

#unique_count(attr = '*') ⇒ Object



19
20
21
# File 'lib/aggrobot/sql_functions/common.rb', line 19

def unique_count(attr = '*')
  "COUNT(DISTINCT #{attr})"
end