Tutte le colonne nella clausola SELECT che non hanno un aggregato devono trovarsi in GROUP BY
Bene:
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3
Buono anche:
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, col5, col6
Nessun'altra colonna =nessun GROUP BY necessario
SELECT MAX(col4)
...
Non funzionerà:
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2
Inutile:
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, MAX(col4)
Avere un aggregato (MAX ecc.) con altre colonne senza GROUP BY non ha senso perché la query diventa ambigua.