#NEWLINE# def _attempt_pushdown( self ) : #NEWLINE# #INDENT# ( metrics_valid , lowered_metrics ) = self . _pushdown_exprs ( self . metrics ) #NEWLINE# ( by_valid , lowered_by ) = self . _pushdown_exprs ( self . by ) #NEWLINE# if ( metrics_valid and by_valid ) : #NEWLINE# #INDENT# return Aggregation ( self . op . table , lowered_metrics , by = lowered_by , having = self . having , predicates = self . op . predicates , sort_keys = self . op . sort_keys ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# return self . _plain_subquery ( )