Las funciones agregadas, son funciones que permiten realizar operaciones sobre un conjunto de resultados devolviendo un solo valor agregado. A menudo, son utilizadas junto a la cláusula GROUP BY.
COUNT
La función COUNT, como el resto de funciones agregadas, se coloca siempre en el SELECT delante del FROM. Se utiliza para contar el número de registros. Si no lleva ninguna condición devolvería el número total de registros.
| totalClientes |
|---|
| 7 |
El resultado de la sentencia nos indica que la tabla Clientes consta de un total de 7 registros en la actualidad.
SELECT. Además, no están limitadas a una única función por sentencia, pudiéndose aplicar varias en una misma consulta.A continuación, veremos otro ejemplo sencillo sobre la tabla Pedidos:
| totalAlexa |
|---|
| 2 |
El resultado nos indica que la tabla Pedidos contiene dos registros de dispositivos Alexa ECHO.
MAX
La función MAX devuelve el valor máximo del campo especificado:
| precioMaximo |
|---|
| 2449,5 |
Esta consulta nos indica que nuestro producto más caro de la tabla Pedidos tiene un valor de: 2449,50 euros.
MIN
La función MIN devuelve el valor mínimo del campo especificado:
| precioMinimo |
|---|
| 39,99 |
Esta consulta nos indica que nuestro producto más barato de la tabla Pedidos tiene un valor de: 39,99 euros.
SUM
La función SUM devuelve el valor total de la suma de una columna. Esta función es solo aplicable a campos numéricos siendo los valores NULL ignorados.
| beneficio |
|---|
| 17251,6 |
A través de esta consulta accedemos rápidamente al resultado final de la suma de todos los precios totales de la tabla Pedidos.
AVG
La función AVG devuelve el valor promedio del campo especificado. Esta función es solo aplicable a campos numéricos siendo los valores NULL ignorados.
| precioPromedio |
|---|
| 610,73875 |
Esta consulta nos indica el valor del precio promedio de la tabla Pedidos.
GROUP BY
La cláusula GROUP BY se utiliza para agrupar los resultados de acuerdo a la columna seleccionada, devolviendo una fila de resultados para cada grupo de dicha columna.
GROUP BY se utiliza a menudo junto a funciones agregadas.
En cuanto a la sintaxis, la cláusula GROUP BY se sitúa al final de la sentencia después del WHERE, pero antes del ORDER BY en caso de aplicarse ambas cláusulas.
En primer lugar, ejecutamos la siguiente SELECT de ejemplo sin añadir cláusula GROUP BY:
| idClientes | nombre | apellidos |
|---|---|---|
| 1 | Fernando | García Rodriguez |
| 2 | María | Lopez ruiz |
| 2 | María | Lopez ruiz |
| 3 | Ana | Fernandez Montero |
| 4 | Luis | Sanchez García |
| 4 | Luis | Sanchez García |
| 5 | Alejandro | Valero Martinez |
Al establecerse una relación INNER JOIN entre la tabla Clientes y Pedidos, está SELECT nos permite ver que Clientes han realizado algún pedido, estando por ende, el idClientes presente en la tabla Pedidos tantas veces como pedidos realizados.
Ahora, lanzamos la misma consulta con GROUP BY para ver la diferencia en el resultado de ejecución:
| idClientes | nombre | apellidos |
|---|---|---|
| 1 | Fernando | García Rodriguez |
| 2 | María | Lopez ruiz |
| 3 | Ana | Fernandez Montero |
| 4 | Luis | Sanchez García |
| 5 | Alejandro | Valero Martinez |
Observamos que ahora ha agrupado los registros de mismo valor, eliminando la duplicidad en la consulta.
Como ya hemos mencionado anteriormente, GROUP BY se utiliza a menudo junto a funciones agregadas para ampliar la información devuelta en la consulta:
| idClientes | nombre | apellidos | numeroPedidos | gastoTotalCliente |
|---|---|---|---|---|
| 1 | Fernando | García Rodriguez | 1 | 2449,5 |
| 2 | María | Lopez ruiz | 2 | 3199,78 |
| 3 | Ana | Fernandez Montero | 1 | 4304,25 |
| 4 | Luis | Sanchez García | 2 | 4999 |
| 5 | Alejandro | Valero Martinez | 1 | 899,97 |
Gracias a las funciones agregadas, podemos observar el número de pedidos realizados por cada cliente y el gastoTotal de acuerdo al número de pedidos realizados.