[mySql + Doctrine] Obtenir la valeur Maximale d'un mois sur une année
Bonjour à tous,
J'aurai besoin d'extraire le MAX()d'un mois de dépenses d'une année donnée, j'ai actuellement créé la requête suivante qui me sert de requête pivot (1) puis la requête sensée extraire le max du mois mais renvoie un résultat erroné (2):
Il n'y a que 3 champs : [date_depense],[prix_unitaire]*[quantite], j'ai essayé avec une requête du genre ci-dessous mais les résultats sont erronés :
Merci d'avance pour vos conseils avisés :)
1/
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| //Obtenir les colonnes de dépenses par mois et année pour graphiques (année spécifique)
public function getColonnesDepensesParAnnee($selectionAnnee)
{
return $this->createQueryBuilder('d')
->select("
SUM(CASE WHEN MONTH(d.date_depense)='1' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='2' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='3' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='4' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='5' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='6' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='7' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='8' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='9' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='10' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='11' THEN d.prix_unitaire * d.quantite ELSE 0 END),
SUM(CASE WHEN MONTH(d.date_depense)='12' THEN d.prix_unitaire * d.quantite ELSE 0 END)")
->setParameter(':annee', $selectionAnnee)
->andWhere('YEAR(d.date_depense)=:annee')
->getQuery()->getScalarResult();
} |
2/
Code:
1 2 3 4 5 6 7 8
| public function getMaxMoisDepensesParAnnee($selectionAnnee)
{
return $this->createQueryBuilder('d')
->select("MAX((d.prix_unitaire * d.quantite)) AS maxValeurMoisDepenses,(date_format(d.date_depense,'%M')) as moisDepenses")
->setParameter(':annee', $selectionAnnee)
->andWhere('YEAR(d.date_depense)=:annee')
->getQuery()->getScalarResult();
} |