class Bmg::Sql::Processor::Summarize
Attributes
by[R]
summarization[R]
Public Class Methods
new(by, summarization, builder)
click to toggle source
Calls superclass method
Bmg::Sql::Processor::new
# File lib/bmg/sql/processor/summarize.rb, line 6 def initialize(by, summarization, builder) super(builder) @by = by @summarization = summarization end
Public Instance Methods
on_select_exp(sexpr)
click to toggle source
# File lib/bmg/sql/processor/summarize.rb, line 20 def on_select_exp(sexpr) if obc = sexpr.group_by_clause sexpr = builder.from_self(sexpr) call(sexpr) else sexpr = sexpr.with_update(:select_list, apply(sexpr.select_list)) group_by = builder.group_by_clause(by, &sexpr.desaliaser) sexpr.push(group_by) end end
on_select_list(sexpr)
click to toggle source
# File lib/bmg/sql/processor/summarize.rb, line 31 def on_select_list(sexpr) by_list = sexpr.sexpr_body.select{|select_item| by.include?(select_item.last.last.to_sym) } group_list = summarization.map{|attr,summarizer| [:select_item, [ :summarizer, summarizer.to_summarizer_name, sexpr.desaliaser[summarizer.functor] ], [:column_name, attr.to_s] ] } ([:select_list] + by_list + group_list) end
on_set_operator(sexpr)
click to toggle source
# File lib/bmg/sql/processor/summarize.rb, line 13 def on_set_operator(sexpr) call(builder.from_self(sexpr)) end