Consultas SQL avanzadas
El SQL que se pide en entrevistas y en el día a día de un analista: consultas por pasos con CTE, filtros con EXISTS, rankings, comparaciones con la fila anterior, acumulados y tablas pivotadas. Todos los ejemplos se pueden ejecutar y modificar en el navegador.
-
CTE en SQL: la cláusula WITH
Una CTE (Common Table Expression) es una consulta con nombre que se define con WITH y se usa como si fuera una tabla. Veremos cómo escribirlas, encadenar varias y cuándo usar una CTE recursiva
-
EXISTS y NOT EXISTS en SQL
EXISTS comprueba si una subconsulta devuelve al menos una fila. Veremos cómo usar EXISTS y NOT EXISTS, por qué NOT IN falla con valores NULL y cuándo conviene cada opción
-
Funciones de ventana en SQL: OVER y PARTITION BY
Las funciones de ventana calculan agregados sin agrupar las filas. Veremos qué hace OVER, cómo dividir el cálculo en grupos con PARTITION BY y en qué se diferencian de GROUP BY
-
ROW_NUMBER, RANK y DENSE_RANK en SQL
Las funciones de ranking numeran las filas de un resultado. Veremos en qué se diferencian ROW_NUMBER, RANK y DENSE_RANK cuando hay empates, cómo sacar el top N de cada grupo y para qué sirve NTILE
-
Funciones LAG y LEAD en SQL
LAG y LEAD devuelven el valor de la fila anterior o de la siguiente sin necesidad de un JOIN. Veremos su sintaxis, el valor por defecto, cómo usarlas por grupos y calcular diferencias entre filas, además de FIRST_VALUE y LAST_VALUE
-
Totales acumulados y medias móviles en SQL
Cómo calcular un total acumulado, un acumulado por grupo y una media móvil con SUM y AVG como funciones de ventana. Veremos el marco de la ventana con ROWS BETWEEN y la diferencia entre ROWS y RANGE
-
PIVOT y UNPIVOT en SQL Server
PIVOT convierte los valores de una columna en columnas nuevas, y UNPIVOT hace lo contrario. Veremos la sintaxis de SQL Server y la alternativa estándar con CASE dentro de SUM, que funciona en cualquier base de datos
Qué vas a aprender en esta sección
Con SELECT, GROUP BY y JOIN se resuelve casi cualquier consulta, pero algunas preguntas habituales se vuelven largas y difíciles de leer: el pedido más caro de cada cliente, la variación respecto al mes anterior o las ventas acumuladas del año. Esta sección reúne las herramientas que las resuelven en pocas líneas.
- CTE con
WITH: escribir una consulta compleja por pasos con nombre. EXISTSyNOT EXISTS: filtrar por lo que hay (o no hay) en otra tabla, y por quéNOT INfalla conNULL.OVERyPARTITION BY: qué es una función de ventana y en qué se diferencia deGROUP BY.ROW_NUMBER,RANKyDENSE_RANK: rankings, empates y el clásico “top N por grupo”.LAGyLEAD: comparar cada fila con la anterior y la siguiente.- Totales acumulados: acumulados, medias móviles y el marco
ROWS BETWEEN. PIVOT: convertir filas en columnas, con el operador de SQL Server y conCASE.
Todas las lecciones usan las tablas Clientes y Pedidos del curso y tienen ejemplos ejecutables. Las funciones de ventana son SQL estándar: lo que aprendas aquí sirve igual en SQL Server, PostgreSQL, MySQL 8, Oracle o BigQuery.