iberck
10/1/2015 - 7:12 PM

Funciones de agregación

Funciones de agregación

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

Funciones de agregación junto con columnas sin función de agregación

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