Unidad dos de la materia de taller de base de datos.

Unidad dos Lenguaje de Manipulacion de Datos.

2.4 Funciones de agregado y de agrupación.

Seguimos con nuestra serie de posts sobre los fundamentos del lenguaje de consultas SQL, pero recuerda que, si quieres aprender SQL en serio con todo el apoyo de un tutor especialista, nuestro curso online de fundamentos de SQL es tu mejor opción para aprender de forma rápida y eficaz.

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.

Funciones de Agregacíon

Las funciones de agregación en SQL nos permiten efectuar operaciones sobre un conjunto de resultados, pero devolviendo un único valor agregado para todos ellos. Es decir, nos permiten obtener medias, máximos, etc... sobre un conjunto de valores.

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:

Funciones de Agrupacíon

La cláusula GROUP BY unida a un SELECT permite agrupar filas según las columnas que se indiquen como parámetros, y se suele utilizar en conjunto con las funciones de agrupación, para obtener datos resumidos y agrupados por las columnas que se necesiten.

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...: