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_except(sexpr)
Alias for: on_set_operator
on_intersect(sexpr)
Alias for: on_set_operator
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
Also aliased as: on_union, on_except, on_intersect
on_union(sexpr)
Alias for: on_set_operator