Lección 10 del curso SQL Nivel Intermedio.
En la lección anterior vimos cómo generar agrupaciones con la cláusula GROUP BY usando como criterios marcas de tiempo como fechas y horas.
En esta última lección veremos tres ejemplos avanzados de procesamiento de marcas temporales, diferentes del uso de Series de Tiempo que vimos en la lección anterior, para analizar una tabla de datos en SQL. Y para todos los ejemplos seguiremos usando la base de datos “olist” que hemos analizado en lecciones anteriores.
Así que comencemos con el primer ejemplo, donde intentaremos responder a esta pregunta: por cada cliente ¿cuándo se realizó la primera compra, cuándo la última y cuántas compras realizó en este periodo?
Veamos cómo usar las herramientas aprendidas hasta el momento para responder a esta pregunta:
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, para responder a esta pregunta hemos tomado la tabla “ordenes” y sobre ésta hemos generado agrupaciones por identificador de cliente (“cliente_id”) y además hemos aplicado las funciones MIN() y MAX() sobre la fecha de compra (columna “orden_compra”) para determinar la primera y la última fecha de compra así como la cantidad de días transcurridos entre estas dos fechas. Y por último hemos usado COUNT() para determinar el número de productos comprados en ese periodo de tiempo.
Analicemos ahora un segundo ejemplo. Intentemos responder a esta pregunta: ¿cuál es el mes “estrella” (con más ventas totales) de cada categoría de producto?
Veamos una solución a este problema:
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 este caso hemos tenido que recurrir al uso de uniones (con la sentencia JOIN) vistas en el curso SQL Nivel Básico para combinar la información proveniente de las tablas “ordenes”, “ordenes_items” y “productos”.
Y luego, a partir del resultado obtenido, hemos generado agrupaciones con GROUP BY por categoría del producto y por mes y hemos extraido el mes de las marcas temporales para determinar el mes más exitoso por categoría del producto.
Y por último analicemos un tercer ejemplo. En este caso intentaremos responder a una pregunta similar a la del ejemplo anterior pero enfocada en los vendedores: ¿cuál es el mes “estrella” (con más ventas totales) de cada vendedor?
Veamos una posible solución a este ejemplo:
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 este último caso hemos usado un enfoque similar al segundo ejemplo. Sin embargo, para plantear esta solución hemos combinado únicamente las tablas “ordenes_items” y “productos” con lo cual logramos determinar por cada producto vendido el identificador del cliente junto con el precio del producto correspondiente, así como la fecha en la cual se realizó la venta.
Y después de esto hemos usado EXTRACT() para extraer el mes de la marca de tiempo correspondiente y hemos generado agrupaciones por identificador del vendedor y por mes, lo cual nos permitió encontrar el mes con más ventas para cada uno de los vendedores.
Y con esto ya hemos llegado al final de este curso, así que !te felicito por haber llegado hasta este punto!
A lo largo de estas 10 lecciones hemos aprendido a usar funciones de ventana, a realizar sub-consultas y a procesar bases de datos usando marcas de tiempo y esto nos ha permitido llegar a un nivel en el cual ya podemos realizar consultas bastante sofisticadas sobre una base de datos.
Así que te invito a contactarme para que me compartas tus comentarios acerca del curso y tus sugerencias para seguir ampliando el contenido de la Academia Online. Y además, te invito a continuar esta línea de formación con el siguiente curso en esta serie: SQL Nivel Avanzado.
¡Te envío un saludo y nos vemos en el próximo curso!
Todas las lecciones del curso SQL Nivel Intermedio
