code: public function groupBy($columns)
      {
          if ($columns instanceof ExpressionInterface) {
              $columns = [$columns];
          } elseif (!is_array($columns)) {
              $columns = preg_split('/\s*,\s*/', trim($columns), -1, PREG_SPLIT_NO_EMPTY);
          }
          $this->groupBy = $columns;
          return $this;
      }
docs: Sets the GROUP BY part of the query.
  @param string|array|ExpressionInterface $columns the columns to be grouped by.
  Columns can be specified in either a string (e.g. "id, name") or an array (e.g. ['id', 'name']).
  The method will automatically quote the column names unless a column contains some parenthesis
  (which means the column contains a DB expression).
  
  Note that if your group-by is an expression containing commas, you should always use an array
  to represent the group-by information. Otherwise, the method will not be able to correctly determine
  the group-by columns.
  
  Since version 2.0.7, an [[ExpressionInterface]] object can be passed to specify the GROUP BY part explicitly in plain SQL.
  Since version 2.0.14, an [[ExpressionInterface]] object can be passed as well.
  @return $this the query object itself
  @see addGroupBy()