Funciones de agregación
Ejemplos de funciones de agregación MAX,MIN,AVG,SUM,COUNT
.
Aplican sobre un conjunto de resultados, por lo tanto pueden ser utilizadas con/sin la clausula GROUP BY
ya que el resultado de un query se puede interpretar como 1 grupo:
select MAX(id) from quest
Cuando utilice funciones de agregación en conjunto con otras columnas normales (sin agregación), dichas columnas deberán estar presentes en el GROUP BY
:
Reglas generales para el uso de columnas junto con funciones de agragación:
Good:
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3
Also good:
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, col5, col6
No other columns = no GROUP BY needed
SELECT MAX(col4)
...
Won't work:
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2
Pointless:
SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, MAX(col4)
Having an aggregate (MAX etc) with other columns without a GROUP BY makes no sense because the query becomes ambiguous.
En algunas bases de datos lanza error cuando se mezclan columnas normales con funciones de agregación sin un group by, sin embargo en mysql ejecuta el query de forma normal con el siguiente comportamiento:
For a query like SELECT name, MAX(age) FROM t; the reference docs says that:
Without GROUP BY, there is a single group and it is indeterminate which name value to choose for the group