Toutes les colonnes de la clause SELECT qui n'ont pas d'agrégat doivent être dans GROUP BY
Bien :
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3
Aussi bien :
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, col5, col6
Aucune autre colonne =aucun GROUP BY nécessaire
SELECT MAX(col4)
...
Ne fonctionnera pas :
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2
Inutile :
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, MAX(col4)
Avoir un agrégat (MAX etc.) avec d'autres colonnes sans GROUP BY n'a aucun sens car la requête devient ambiguë.