Pas forcément, au lieu de repartir d'une nouvelle requête, il serait possible de faire quelquechose comme cela : 

```php
class ObjetCreantQueryBuilderDepuisContext
{
//à voir si on injecte pas le contexte autrement
   public function getResponse($context) {
           //lapplication des filres sur le tmpQuerybuilder
           $tmpQueryBuilder = $this->tmpqueryBuilder->select('DISTINCT response.id');
          $tmpTablename = md5(serialize($context->getParameters()));
          //création table temporaire d'après le $tmpQueryBuilder
        $queryBuilder = $this->entityManager->createQueryBuilder();
        $queryBuilder->from('AfupBarometreBundle:Response', 'response');
        //jointure sur la table temporaire
      return $queryBuilder;
   }
}
```

Ce qui permet de garder les rapports simples

```php
public function getData()
{
$queryBuilder = $this->ObjetCreantQueryBuilderDepuisContext($context);
  ->select('response.experience')
            ->addSelect('AVG(response.annualSalary) as annualSalary')
            ->addSelect('COUNT(r.id) as nbResponse')
            ->groupBy('r.experience');
        return $reportQueryBuilder->getQuery()->getArrayResult();
}
```

Qu'en penses tu ?