COUNT, SUM, AVG, MIN y MAX
BásicoLas funciones de agregación resumen muchas filas en un solo valor: count(*) cuenta filas, count(DISTINCT columna) cuenta valores distintos, sum y avg suman y promedian, min y max devuelven los extremos. Todas, salvo count(*), ignoran los NULL.
Sintaxis
SELECT
count(*) AS filas,
count(DISTINCT columna) AS valores_distintos,
sum(importe) AS total,
avg(importe) AS promedio,
min(importe) AS minimo,
max(importe) AS maximo
FROM tabla
WHERE ...;Ejemplo
SELECT
count(*) AS pedidos,
count(DISTINCT o.customer_id) AS clientes,
sum(o.total) AS facturado,
round(avg(o.total), 2) AS ticket_promedio,
min(o.total) AS minimo,
max(o.total) AS maximo
FROM orders AS o
INNER JOIN restaurants AS r ON r.id = o.restaurant_id
WHERE r.city_id = 8 -- Montevideo: todos los importes en pesos uruguayos
AND o.status = 'delivered'
AND o.placed_at >= '2025-08-01'
AND o.placed_at < '2025-09-01';Resultado
| pedidos | clientes | facturado | ticket_promedio | minimo | maximo |
|---|---|---|---|---|---|
| 49 | 27 | 72170.92 | 1472.88 | 261.60 | 3559.20 |
Cómo leerlo
En agosto de 2025 Montevideo tuvo 49 pedidos entregados de 27 clientes distintos: count(*) cuenta pedidos y count(DISTINCT customer_id) cuenta personas. El ticket promedio (importe medio por pedido) es facturado / pedidos. Se filtra una sola ciudad porque cada ciudad cobra en su moneda.
Error común
Así no
SELECT sum(total_amount) AS ventas_totales
FROM orders
WHERE created_at >= '2025-08-01'
AND created_at < '2025-09-01';Sumar importes de varias monedas. En TiendaViva cada pedido está en la moneda de su país (currency): sumar pesos mexicanos con pesos chilenos da un número sin significado. Filtra una moneda (WHERE currency = 'MXN'), agrupa por currency o convierte todo a una moneda común antes de sumar.
En otros motores: SQL Server
SQL Server
AVGsobre una columna entera devuelve un entero truncado: el promedio de 4 y 5 da 4. Hay que convertir antes a decimal. En PostgreSQLavgde un entero ya devuelvenumericcon decimales.SELECT AVG(CAST(rating AS decimal(10, 2))) FROM reviews;
Estos fragmentos no se ejecutan en el curso: se muestran como referencia de cada motor.