Agregaciones y window functions
GROUP BY, funciones de ventana, frames, QUALIFY y seleccion de la expresion analitica correcta.
Conceptos que debes poder reconocer y distinguir:
- GROUP BY
- Aggregate functions
- OVER
- PARTITION BY y ORDER BY
- Window frames
- Ranking functions
- QUALIFY
Usa los enlaces oficiales de Snowflake de esta unidad para ampliar cada concepto y contrastar su comportamiento.
Las agregaciones reducen varias filas a una fila por grupo. Las window functions calculan sobre un conjunto relacionado de filas y mantienen el detalle original. La eleccion correcta depende de si el resultado debe conservar cada fila de entrada.
Expresion adecuada
| Necesidad | Tecnica | Matiz |
|---|---|---|
| Una fila por cliente con total | SUM con GROUP BY | Se pierde el detalle de pedidos |
| Cada pedido con total del cliente | SUM() OVER (PARTITION BY ...) | Conserva todas las filas |
| Quedar con la ultima fila por entidad | ROW_NUMBER() OVER (...) y QUALIFY | Define orden determinista para empates |
| Acumulado temporal | Window con ORDER BY y frame | El frame determina que filas entran en cada calculo |
| Comparar con fila anterior | LAG o LEAD | Requiere un orden semantico claro |
Reglas de lectura
- PARTITION BY reinicia la ventana por grupo; ORDER BY define la secuencia analitica dentro de cada grupo.
- El frame de ventana no es un detalle decorativo: cambia el conjunto de filas incluido en acumulados y promedios moviles.
- QUALIFY filtra despues de que se calculen las window functions y evita una subconsulta para muchos patrones.
- RANK, DENSE_RANK y ROW_NUMBER se diferencian en como tratan los empates; elige segun si necesitas huecos, mismo rango o una fila unica.