Volver al curso

Data Engineering con Python: Pipelines y Big Data

leccion
3 / 12
advanced
32 horas
Fundamentos de Data Engineering y Python

SQL Avanzado: Window Functions, CTEs y Optimizacion

Lectura
55 min~2 min lectura

SQL: La Herramienta Mas Poderosa del Data Engineer

SQL es el lenguaje que todo Data Engineer debe dominar a nivel avanzado. Las tecnicas como Window Functions, CTEs recursivas y optimizacion de queries separan a un junior de un senior. En entrevistas de Mercado Libre, Nubank o Globant, SQL avanzado es la prueba mas comun.

Common Table Expressions (CTEs)

-- CTE para analisis de cohortes LATAM
WITH primera_compra AS (
    SELECT user_id,
        MIN(DATE_TRUNC('month', created_at)) AS cohorte
    FROM orders
    WHERE country IN ('AR', 'MX', 'CO', 'BR', 'CL')
    GROUP BY user_id
),
retencion AS (
    SELECT pc.cohorte,
        EXTRACT(MONTH FROM AGE(DATE_TRUNC('month', o.created_at), pc.cohorte)) AS meses,
        COUNT(DISTINCT o.user_id) AS activos
    FROM orders o
    JOIN primera_compra pc ON o.user_id = pc.user_id
    GROUP BY 1, 2
)
SELECT cohorte, meses, activos,
    ROUND(100.0 * activos / FIRST_VALUE(activos) OVER (PARTITION BY cohorte ORDER BY meses), 2) AS retencion_pct
FROM retencion ORDER BY cohorte, meses;

Window Functions

FuncionUsoEjemplo
ROW_NUMBER()Numerar filas unicasDeduplicacion
RANK()Rankings con empatesTop productos por pais
LAG() / LEAD()Filas anteriores/siguientesVariacion mes a mes
SUM() OVER()Running totalsRevenue acumulado
NTILE()Dividir en bucketsSegmentacion de clientes
-- Top 3 productos por categoria y pais
WITH ventas AS (
    SELECT p.category, p.name, o.country,
        SUM(oi.quantity * oi.unit_price) AS revenue
    FROM order_items oi
    JOIN orders o ON oi.order_id = o.order_id
    JOIN products p ON oi.product_id = p.product_id
    WHERE o.created_at >= CURRENT_DATE - INTERVAL '90 days'
    GROUP BY 1, 2, 3
),
ranked AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY country, category ORDER BY revenue DESC) AS ranking
    FROM ventas
)
SELECT * FROM ranked WHERE ranking <= 3;

🚀 Tip para Entrevistas

En entrevistas de Data Engineering en LATAM, el 80% incluyen Window Functions. Practica: deduplicacion con ROW_NUMBER(), running totals y cohortes. Plataformas como HackerRank y LeetCode tienen secciones especificas.

Con estas tecnicas de SQL avanzado, estas listo para construir transformaciones profesionales.