Aprende a utilizar funciones agregadas en SQL

PorLucía Montero Rodríguez

Aprende a utilizar funciones agregadas en SQL

SQL un lenguaje fundamentalEl lenguaje SQL incorpora una serie de funciones agregadas que nos permiten obtener distintos resultados numéricos al ejecutar consultas. Son las siguientes:

Count:
muestra el número de registros que devuelve una consulta.
Avg:
muestra el promedio de los valores evaluados.
Sum:
muestra la suma de los valores evaluados.
Max:
muestra el valor más alto de los valores evaluados.
First:
muestra el primer valor entre los valores evaluados, teniendo en cuenta el método de ordenación aplicado.
Last:
muestra el último valor entre los valores evaluados, teniendo en cuenta el método de ordenación aplicado.
Stdev:
muestra la desviación estándar de los valores evaluados, a partir de una muestra de la población.
Stdevp:
muestra la desviación estándar de los valores evaluados, teniendo en cuenta toda la población.
Var:
muestra la varianza de los valores evaluados, a partir de una muestra de la población.
Varp:
muestra la varianza de los valores evaluados, teniendo en cuenta toda la población.

Aplicación

Siguiendo con la base de datos Librería, vamos a suponer que deseamos saber cuántos libros tenemos dados de alta. La  consulta a escribir podría ser la siguiente teniendo en cuenta que hemos adaptado el encabezado de la columna:
SELECT COUNT(*) AS [Libros registrados]
FROM Libros;

Que dará como resultado un único valor que puedes ver en la imagen: 10, que significa que en la tabla Libros hay 10 registros.
Consulta SQL con resumen
Lo realmente interesante de estas funciones es poder obtener resúmenes por grupos de datos. Por ejemplo, vamos a modificar la consulta anterior para que nos indique cuántos libros hay de cada editorial, para lo que tendremos que añadir al final del todo la cláusula Group By:
SELECT Editorial.Nombre as Editorial, COUNT(Libros.Codlibro) AS [Libros registrados]
FROM Libros INNER JOIN Editorial ON Libros.Codeditorial=Editorial.codeditorial
GROUP BY Editorial.Nombre;
Consulta SQL con datos agrupados
Por supuesto, este tipo de consultas sigue admitiendo las cláusulas que  comentamos en anteriores artículos, pero Group by deberá aparecer en último lugar. En la siguiente consulta, hemos indicado como condición que sólo queremos ver los datos referentes a las editoriales cuyo nombre comience por A; fíjate en el orden de las distintas cláusulas.
SELECT Editorial.Nombre as Editorial, COUNT(Libros.Codlibro) AS [Libros registrados]
FROM Libros INNER JOIN Editorial ON Libros.Codeditorial=Editorial.codeditorial
WHERE Editorial.Nombre LIKE «A*»
GROUP BY Editorial.Nombre;
Consulta SQL agrupada con filtros

Criterios sobre funciones agregadas

Si, a diferencia del caso anterior, quisiéramos aplicar la condición en el propio resultado del conteo, no podemos usar Where, en su lugar habrá que emplear la cláusula Having.
Por ejemplo, vamos a suponer que queremos saber los libros que tiene cada editorial siempre que tengan más de dos unidades. La instrucción a escribir sería:
SELECT Editorial.Nombre as Editorial, COUNT(Libros.Codlibro) AS [Libros registrados]
FROM Libros INNER JOIN Editorial ON Libros.Codeditorial=Editorial.codeditorial
GROUP BY Editorial.Nombre
HAVING COUNT(Libros.Codlibro)>=2;
Y el resultado para este ejemplo, en el que ya no aparece Planeta:
Consulta SQL con criterio en la función agregada

Consigue mejores resultados en SQL utilizando funciones agregadas

Acerca del autor

Lucía Montero Rodríguez administrator