El 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.
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;
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;
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:
Consigue mejores resultados en SQL utilizando funciones agregadas
Utilizamos cookies para optimizar nuestro sitio web y nuestro servicio.
Funcional
Siempre activo
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
The technical storage or access that is used exclusively for statistical purposes.El almacenamiento o acceso técnico que se utiliza exclusivamente con fines estadísticos anónimos. Sin un requerimiento, el cumplimiento voluntario por parte de tu proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarte.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Acerca del autor