Hasta ahora hemos visto qué es SQL, qué es una base de datos relacional y cómo se diseñan, y hemos estudiado las consultas simples, las consultas multi-tabla
En esta ocasión vamos a estudiar cómo generar resultados de consultas agrupados y con algunas operaciones de agregación aplicadas.
Las funciones de agregación básicas que soportan todos los gestores de datos son las siguientes:
o COUNT: devuelve el número total de filas seleccionadas por la consulta.
o MIN: devuelve el valor mínimo del campo que especifiquemos.
o MAX: devuelve el valor máximo del campo que especifiquemos.
o SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
o AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en columnas numéricas.
Las funciones anteriores son las básicas en SQL, pero cada sistema gestor de bases de datos relacionales ofrece su propio conjunto, más amplio, con otras funciones de agregación particulares. Puedes consultar las que ofrecen SQL Server, Oracle y MySQL.Así, por ejemplo, si queremos obtener algunos datos agregados de la tabla de pedidos de la base de datos de ejemplo Northwind, podemos escribir una consulta simple como la siguiente:
y obtendríamos el siguiente resultado en el entorno de pruebas:
Hemos visto en el ejemplo anterior que obteníamos sólo una fila con los datos indicados correspondientes a toda la tabla. Ahora vamos a ver con otro ejemplo cómo obtener datos correspondientes a diversos grupos de filas, concretamente agrupados por cada empleado:
-SELECT EmployeeID, COUNT(*) AS TotalPedidos, COUNT(ShipRegion) AS FilasNoNulas.
-MIN(ShippedDate) AS FechaMin, MAX(ShippedDate) AS FechaMax.
-SUM(Freight) PesoTotal, AVG(Freight) PesoPromedio.
-FROM Orders.
-GROUP BY EmployeeID
En este caso obtenemos los mismos datos pero agrupándolos por empleado, de modo que para cada empleado de la base de datos sabemos cuántos pedidos ha realizado, cuándo fue el primero y el último, etc...: