- Code En Español
- Posts
- SQL avanzado para analistas: el siguiente nivel para nuestras consultas
SQL avanzado para analistas: el siguiente nivel para nuestras consultas
Funciones de agregación, agrupación, ordenamiento y más
1. Funciones de agregación
Las funciones de agregación resumen datos de varias filas, como en Python o Excel.
Principales funciones:
COUNT(*)→ cuenta todas las filasCOUNT(columna)→ cuenta valores no nulosCOUNT(DISTINCT columna)→ cuenta valores únicosSUM(columna)→ suma los valoresAVG(columna)→ calcula el promedioMIN(columna)/MAX(columna)→ valor mínimo o máximo
Ejemplo:
SELECT
COUNT(*) AS total,
SUM(precio) AS total_suma,
AVG(precio) AS promedio
FROM ventas;
2. Agrupar datos con GROUP BY
Sirve para obtener resultados por grupo (categoría, región, fecha, etc.).
Es como groupby() en pandas.
Ejemplo:
SELECT
categoria,
SUM(ventas) AS total_ventas
FROM productos
GROUP BY categoria;
Recuerda:
Todos los campos en
SELECTque no sean funciones agregadas deben estar enGROUP BY.Puedes usar varias funciones agregadas juntas (
SUM,AVG,COUNT, etc.).
3. Ordenar resultados con ORDER BY
Después de agrupar, puedes ordenar los resultados.
Ejemplo:
SELECT categoria, SUM(ventas) AS total
FROM productos
GROUP BY categoria
ORDER BY total DESC;
Notas:
ASC= ascendente (por defecto)DESC= descendente
4. Filtrar resultados con HAVING
Usa HAVING para filtrar sobre los resultados de una agregación.
(WHERE solo sirve para filtrar datos antes del GROUP BY.)
Ejemplo:
SELECT categoria, SUM(ventas) AS total
FROM productos
GROUP BY categoria
HAVING SUM(ventas) > 1000;
5. Funciones de fecha y hora
Ejemplo 1 — EXTRACT():
Extrae una parte específica de una fecha (año, mes, día, etc.).
SELECT
nombre_cliente,
EXTRACT(YEAR FROM fecha_compra) AS año
FROM ventas;
➡️ Resultado: muestra el año en que cada cliente hizo su compra.
Ejemplo 2 — DATE_TRUNC():
Trunca una fecha a un nivel (por ejemplo, al mes o al día).
SELECT
DATE_TRUNC('month', fecha_compra) AS mes,
SUM(total) AS ventas_mensuales
FROM ventas
GROUP BY mes;
➡️ Resultado: total de ventas por mes, redondeando todas las fechas al primer día del mes.
👉 Próximo tema: Como usar la función map()
Reply