Analista de Datos: pregunta de entrevista
¿Cuándo usas funciones ventana de SQL?
Las funciones ventana calculan rankings, acumulados, lags o agregados sobre filas relacionadas sin colapsarlas. PARTITION BY define el grupo y ORDER BY la secuencia dentro de la ventana.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Una función de ventana calcula un valor por fila usando un conjunto de filas relacionadas, sin el colapso del GROUP BY. PARTITION BY define qué filas van juntas, ORDER BY define su secuencia, y una cláusula de marco opcional como ROWS BETWEEN limita el rango. ROW_NUMBER, RANK y DENSE_RANK producen ordenaciones; LAG y LEAD alcanzan filas vecinas; SUM o AVG sobre una ventana producen totales acumulados o móviles. Sustituyen self-joins y subconsultas correlacionadas, y se evalúan después de WHERE, así que filtrar por un resultado de ventana requiere una subconsulta o CTE.
Ejemplo
Hallar el pedido más reciente de cada cliente es ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) seguido de un filtro por número de fila 1 en una consulta externa. Una vista de retención usa LAG(order_date) OVER (PARTITION BY customer_id ORDER BY order_date) para calcular los días desde el pedido anterior en cada fila.
Errores frecuentes
- Confundir RANK, que deja huecos tras empates, con DENSE_RANK.
- Filtrar por una columna de ventana en el WHERE de la misma consulta.
- Olvidar el marco por defecto, de modo que un total acumulado se convierte en total del grupo cuando falta ORDER BY.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.