'apply one or more GROUP BY criterion to the query and return
the newly resulting :class:`.Query`'

@_generative(_no_statement_condition, _no_limit_offset)
def group_by(self, *criterion):

    criterion = list(chain(*[_orm_columns(c) for c in criterion]))
    criterion = self._adapt_col_list(criterion)
    if (self._group_by is False):
        self._group_by = criterion
    else:
        self._group_by = (self._group_by + criterion)
