# File lib/tapkit/access/sql.rb, line 370
                def prepare_aggregate( aggregate_spec )
                        if aggregate_spec.group_by then
                                attr = @entity.attribute aggregate_spec.group_by
                                add_select_list(attr, attr.name, true)
                        else
                                group_by = nil
                        end

                        aggregate_spec.attributes.each do |agg_attr|
                                attr = @entity.attribute agg_attr[:name]
                                add_select_list_with_function(attr, agg_attr[:function], agg_attr[:key])
                        end

                        @where_clause = sql_for_qualifier aggregate_spec.qualifier

                        # not support yet
                        # having_clause = sql_for_qualifier aggregate_spec.having
                        having_clause = nil

                        aggregate_spec.sort_orderings.each do |order|
                                add_order order
                        end

                        join_expression
                        tables  = table_list @entity
                        select  = nil # 'DISTINCT', etc.

                        sql = assemble_aggregate(aggregate_spec.qualifier,
                                aggregate_spec.having, aggregate_spec.sort_orderings, select,
                                @list_string, tables, join_clause,
                                where_clause, group_by_string, having_clause, order_by_string)

                        @statement = sql
                end