« Rester groupir ! »… ou pas

MySQL, vous connaissez ? Et les fonctions d’agrégats MAX, MIN, SUM et AVG aussi ? Mais si par exemple vous voulez trouver la plus grande valeur entre deux, genre SELECT MAX(champA, champB) as valeurmax, sans utiliser les agrégats, vous faites comment ?…

Difficile à trouver sur Google, sachant que dès lors qu’on demande une fonction qui trouve le maximum (ou le minimum), on se retrouve inondé de tutoriels et de pages expliquant comment se servir du GROUP BY.

Finalement, la réponse se trouve dans la page Opérateurs de comparaison de la doc MySQL. Résultat :

  • Pour trouver le maximum entre deux ou plusieurs valeurs, il faut utiliser GREATEST(…).
  • Pour trouver le minimum entre deux ou plusieurs valeurs, il faut utiliser LEAST(…).
  • Pour faire la somme et la moyenne, rien ne vaut la bonne vieille méthode « à la main » : champA+champB et (champA+champB)/2.