Skip to content

Consultas Agregadas

Las consultas agregadas realizan cálculos sobre un conjunto de datos en una tabla de base de datos.
En lugar de devolver una lista detallada de registros, permiten obtener información resumida y estadística.

Entre las funciones más comunes se encuentran:

  • SUM → suma total de valores de una columna.
  • COUNT → número de registros.
  • AVG → promedio de valores.
  • MAX → valor máximo.
  • MIN → valor mínimo.

Estas funciones suelen combinarse con la cláusula GROUP BY, que agrupa resultados en función de una o más columnas, y opcionalmente con HAVING para aplicar condiciones sobre los grupos.


SELECT [ALL | DISTINCT ] [TOP <n> [WITH TIES]]
<nombre_campo> [{,<nombre_campo>}]
[{,<funcion_agregado>}]
FROM <nombre_tabla> | <nombre_vista>
[{,<nombre_tabla> | <nombre_vista>}]
[WHERE <condicion> [{ AND | OR <condicion>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicion> [{ AND | OR <condicion>}]]
[ORDER BY <nombre_campo> | <indice_campo> [ASC | DESC]
[{,<nombre_campo> | <indice_campo> [ASC | DESC]}]]

Agrupa los resultados de la consulta según una o más columnas.

SELECT c.razonSocial AS [Cliente], SUM(p.importe) AS [Gasto total]
FROM Pedidos AS p
INNER JOIN Clientes AS c ON p.codCliente = c.ID
GROUP BY c.razonSocial
ORDER BY [Gasto total] DESC

👉 Esto agrupa las ventas por cliente y muestra el gasto total de cada uno, ordenando de mayor a menor.


Filtra los grupos resultantes de una consulta agrupada.

SELECT c.razonSocial AS [Cliente], SUM(p.importe) AS [Gasto total]
FROM Pedidos AS p
INNER JOIN Clientes AS c ON p.codCliente = c.ID
GROUP BY c.razonSocial
HAVING SUM(p.importe) > 4700
ORDER BY [Gasto total] ASC

👉 Muestra solo clientes cuyo gasto total supere los 4700 €, ordenando de menor a mayor.

Importante

WHERE filtra registros antes de la agregación.
HAVING filtra grupos después de la agregación.


Ordena los resultados en base a una o más columnas (ascendente ASC o descendente DESC).

SELECT c.razonSocial AS [Cliente], SUM(p.importe) AS [Gasto total]
FROM Pedidos AS p
INNER JOIN Clientes AS c ON p.codCliente = c.ID
GROUP BY c.razonSocial
HAVING SUM(p.importe) > 4700
ORDER BY [Gasto total] DESC

👉 Ordena los resultados de mayor a menor gasto total.


Las funciones de agregación más utilizadas son:

  • MAX → devuelve el valor máximo de una columna.
    Ejemplo: la nota más alta en un listado de estudiantes.
  • MIN → devuelve el valor mínimo.
    Ejemplo: el salario más bajo en una tabla de empleados.
  • COUNT → cuenta filas o registros que cumplen una condición.
    Ejemplo: número de ventas de un producto.
  • SUM → suma de valores.
    Ejemplo: total de productos vendidos.
  • AVG → promedio.
    Ejemplo: media de calificaciones en una tabla de estudiantes.

Estas funciones permiten resumir y analizar datos fácilmente dentro de grandes volúmenes de información.