Module: Aggrobot::SQLFunctions::Common
- Defined in:
- lib/aggrobot/sql_functions/common.rb
Instance Method Summary collapse
- #asc(attr) ⇒ Object
-
#avg(attr, rounding = self.precision) ⇒ Object
(also: #average)
returns ROUNDED average of attr, with precision(ROUNDING DIGITS).
- #count(attr = '*') ⇒ Object
- #desc(attr) ⇒ Object
-
#divide(attr, divider, rounding = self.precision) ⇒ Object
returns ROUND of attr/divider, with precision(self.precision).
-
#group_collect(attr) ⇒ Object
GROUP_CONCAT: A SQL function which returns a concatenated string group_collect returns concatenated string of distinct attr.
- #max(attr) ⇒ Object
- #min(attr) ⇒ Object
-
#multiply(attr, multiplier, rounding = self.precision) ⇒ Object
returns ROUND of multipliers, with precision(self.precision).
-
#percent(total, attr = count, rounding = self.precision) ⇒ Object
returns percentage based on ROUND SQL function, with precision(ROUNDING DIGITS).
- #sum(attr = count) ⇒ Object
- #unique_count(attr = '*') ⇒ Object
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 |