• 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 filas

  • COUNT(columna) → cuenta valores no nulos

  • COUNT(DISTINCT columna) → cuenta valores únicos

  • SUM(columna) → suma los valores

  • AVG(columna) → calcula el promedio

  • MIN(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 SELECT que no sean funciones agregadas deben estar en GROUP 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

or to participate.