Lección 1 del curso SQL Nivel Intermedio.
En este primer módulo del curso hablaremos de las funciones de ventana, que son un conjunto de funciones similares a las agrupaciones y agregaciones generadas con GROUP BY, vistas al final del curso anterior, pero que nos permiten operar sobre filas dependiendo de los criterios que establezcamos y que nos permiten etiquetar, agregar o extraer valores numéricos de dichas filas.
Y en esta primera lección del curso comenzaremos entendiendo qué es y cómo usar el primer conjunto de funciones de ventana que nos permite asignar etiquetas a nuestros datos.
Así que esta lección está dividida en cuatro partes:
- En la primera parte vamos a entender el principio de funcionamiento de las funciones de ventana y cómo se diferencian de las agrupaciones generadas por GROUP BY y de igual forma veremos la sintaxis básica que tendremos que usar al momento de crear consultas con estas funciones de ventana
- En la segunda parte veremos cómo usar la función ROW_NUMBER() que nos permite asignar una etiqueta tipo “ranking” a cada fila dependiendo de los valores que tenga una columna numérica
- En la tercera parte veremos dos variantes de ROW_NUMBER(), que son las funciones RANK() y DENSE_RANK()
- Y en la cuarta parte de la lección veremos cómo usar la función de ventana NTILE() que nos permite dividir el dataset en un número específico de agrupaciones y a cada fila en cada agrupación asignar una categoría específica.
Así que comencemos viendo qué son las funciones de ventana y cuál es su sintaxis de uso en SQL:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Como acabamos de ver, este primer grupo de funciones de ventana nos permite operar sobre agrupaciones de filas y generar a la salida el mismo número de filas de la tabla original pero añadiendo, por ejemplo, una etiqueta a cada fila dependiendo de los criterios establecidos.
En este sentido, las funciones de ventana son diferentes a las agrupaciones, pues las agrupaciones toman igualmente grupos de filas pero generan agregaciones, lo que hace que la tabla resultante tenga menos filas que la tabla original.
Así que teniendo esto claro, veamos a continuación cómo usar la función ROW_NUMBER() para el etiquetado de cada fila de una tabla de datos:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
En esencia ROW_NUMBER asigna un número, un “ranking”, a cada fila de cada una de las agrupaciones de filas generadas con PARTITION BY. Y este ranking es precisamente una etiqueta que, dependiendo de las características de nuestra tabla, nos permitirá realizar diferentes tipos de análisis sobre nuestro set de datos.
Sin embargo, ROW_NUMBER() tiene una limitación y es que cuando hay empates (es decir cuando tenemos valores numéricos idénticos) la etiqueta asignada es diferente.
En estos casos lo que nos interesa es que para valores idénticos se tenga la misma etiqueta, lo cual podemos lograr usando las funciones RANK() y DENSE_RANK(). Veamos en detalle cómo usar estas dos funciones:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Bien, teniendo claro cómo usar y las diferencias que existen entre ROW_NUMBER(), RANK() y DENSE_RANK(), a continuación hablaremos de una cuarta función de ventana que nos permite asignar etiquetas a la fila de la tabla de datos. Veamos entonces cómo usar NTILE():
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Como acabamos de ver, NTILE resulta útil cuando queremos distribuir las filas de una tabla en un número predeterminado de grupos aproximadamente iguales. Esto es útil para crear cuartiles, deciles, percentiles, o cualquier otro tipo de segmentación de datos en partes iguales.
Así que con todo esto ya tenemos claro qué son las funciones de ventana en SQL y cómo usar las principales funciones de ventana que nos permiten asignar una etiqueta a cada fila en una tabla de datos.
En la siguiente lección veremos entonces un segundo grupo de funciones de ventana que nos permitirán generar agregaciones sobre las filas.
Todas las lecciones del curso SQL Nivel Intermedio
