¡Bienvenidos, muy buenos días tardes o noches , según donde me leas !
Explorando el Mundo de los Datos Empresariales con T-SQL: Desafíos Seleccionados del Reto #14 de FP20Analytics
En el dinámico y desafiante entorno de FP20Analytics, nos enfrentamos a una multitud de retos que ponen a prueba nuestras habilidades en el análisis de datos. En el reciente desafío número 14, nos sumergimos en un océano de datos, armados con T-SQL(el cual me gusta mucho), con el objetivo de descifrar y extraer información valiosa para la toma de decisiones empresariales.
Entre las numerosas preguntas planteadas en este desafío, hemos seleccionado cuidadosamente cuatro que consideramos particularmente intrigantes y significativas. Cada una de estas preguntas nos lleva a un viaje de exploración de datos único, donde utilizaremos nuestras habilidades en T-SQL para desentrañar patrones, tendencias y relaciones dentro de los conjuntos de datos proporcionados.
Desde calcular el precio promedio del gasoil en todas las provincias hasta analizar la variación de precios de Petrol Premium – 95 Octanos a lo largo del tiempo, cada pregunta seleccionada nos desafía a utilizar T-SQL de manera creativa y efectiva para obtener información relevante y accionable.
En esta aventura de análisis de datos, nuestro objetivo es no solo responder estas preguntas, sino también demostrar nuestra capacidad para enfrentar desafíos complejos y extraer conocimientos valiosos de los datos. Acompáñanos mientras nos sumergimos en estos desafíos seleccionados del Reto #14 de FP20Analytics, utilizando T-SQL como nuestra guía en este emocionante viaje de descubrimiento de datos empresariales.
Luego de esta intro , manos a la obraaaa!!!!!
Ahora, nos preparamos para abordar las preguntas de negocio con nuestro emocionante desafío número 14. En este proceso, recordemos que contamos con T-SQL para llevar a cabo nuestras operaciones.
La primera pregunta a responder es la siguiente:
— Al responder la primera pregunta de negocio — — ¿Cuál es el precio medio del gasoil de grado 2 en todas las provincias? —
select AVG(b.precio) AS Precio, a.Producto, c.Provincia
from Tabla_Hechos as b
left join Dim_Producto as a
on a.Id_Producto=b.Id_Producto
left join Dim_Ubicacion as c
on b.Id_Ubicacion=c.Id_Ubicacion
select AVG(b.precio) AS Precio, a.Producto, c.Provincia: Esta es la declaración SELECT que especifica las columnas que se mostrarán en los resultados de la consulta. AVG(b.precio) calcula el precio medio de los productos en todas las provincias y lo muestra como «Precio». a.Producto y c.Provincia son las columnas de la tabla Dim_Producto y Dim_Ubicacion respectivamente, que se mostrarán en los resultados.
from Tabla_Hechos as b: Esta es la cláusula FROM que especifica la tabla principal desde la cual se están recuperando los datos. En este caso, se está utilizando la tabla Tabla_Hechos, que generalmente contiene los hechos o transacciones principales de la base de datos.
left join Dim_Producto as a on a.Id_Producto=b.Id_Producto: Esta es una cláusula LEFT JOIN que une la tabla principal (Tabla_Hechos) con la tabla Dim_Producto utilizando la clave Id_Producto. Se utiliza LEFT JOIN para asegurarse de que todos los registros de la tabla Tabla_Hechos se incluyan en el resultado, incluso si no hay coincidencias en la tabla Dim_Producto.
left join Dim_Ubicacion as c on b.Id_Ubicacion=c.Id_Ubicacion: Esta es otra cláusula LEFT JOIN que une la tabla principal (Tabla_Hechos) con la tabla Dim_Ubicacion utilizando la clave Id_Ubicacion. Al igual que antes, se utiliza LEFT JOIN para garantizar que todos los registros de Tabla_Hechos se incluyan en el resultado, incluso si no hay coincidencias en la tabla Dim_Ubicacion.
En este caso, se enfatiza el uso de left join y se destaca la importancia de dominar esta técnica como desarrollador. Es esencial para poner en práctica nuestros conocimientos, tanto de inteligencia artificial como de otros ámbitos.
Para la segunda pregunta: 2. Por ciudades, ¿cuál es la empresa con mayores ventas totales? En este caso, lo he realizado por provincias (Ver Imagen 2)
— Nos dirigimos a la segunda pregunta de negocios — — Por ciudades, ¿cuál es la empresa con mayores ventas totales?
select d.Posicion,d.Provincia,d.Empresa
from (SELECT c.Provincia,b.Empresa, SUM(a.Precio) AS total_ventas,
ROW_NUMBER() OVER(PARTITION BY c.provincia ORDER BY SUM(a.precio) asc) AS Posicion
FROM Tabla_Hechos as a
left join Dim_Empresa as b
on a.Id_Empresa=b.Id_Empresa
left join Dim_Ubicacion as c
on a.Id_Ubicacion=c.Id_Ubicacion
group by c.Provincia,b.Empresa
) as d
where d.Posicion=1 and d.Provincia is not null
SELECT d.Posicion, d.Provincia, d.Empresa: Esta es la declaración SELECT que especifica las columnas que se mostrarán en los resultados de la consulta. d.Posicion, d.Provincia y d.Empresa son las columnas seleccionadas de la subconsulta.
(SELECT c.Provincia, b.Empresa, SUM(a.Precio) AS total_ventas, ROW_NUMBER() OVER(PARTITION BY c.provincia ORDER BY SUM(a.precio) asc) AS Posicion FROM Tabla_Hechos as a left join Dim_Empresa as b on a.Id_Empresa=b.Id_Empresa left join Dim_Ubicacion as c on a.Id_Ubicacion=c.Id_Ubicacion group by c.Provincia,b.Empresa) as d: Esta es una subconsulta que calcula las ventas totales para cada empresa en cada provincia. Utiliza las tablas Tabla_Hechos, Dim_Empresa y Dim_Ubicacion y realiza un LEFT JOIN entre ellas. Luego, agrupa los resultados por provincia y empresa, y calcula la suma total de ventas para cada combinación de provincia y empresa. Además, utiliza la función ROW_NUMBER() para asignar un número de posición a cada fila dentro de cada partición (provincia) ordenada por las ventas totales en orden ascendente.
WHERE d.Posicion=1 and d.Provincia is not null: Esta es la cláusula WHERE que filtra los resultados de la subconsulta para seleccionar solo las filas donde la posición es igual a 1 (es decir, las empresas con las mayores ventas totales en cada provincia) y la provincia no es nula.
En este código, implementamos el cruce de conjuntos con left join, ajustando los procesos para manejar la categorización de un ranking utilizando las funciones row_number y over(partition by) para obtener las empresas con las mayores ventas.
Para la tercera pregunta: 3. ¿Cómo ha variado el precio de Petrol Premium – 95 Octanos de septiembre de 2022 a octubre de 2023? Obtenemos la variación desde las fechas en cuestión sobre el producto específico (Ver Imagen 3)
— 3. ¿Cómo ha variado el precio de Petrol Premium – 95 Octanos de septiembre de 2022 a octubre de 2023? —
select a.fecha_actual,a.costo_actual,b.Producto,
LAG(a.fecha_actual) OVER (ORDER BY a.fecha_actual) AS fecha_anterior,
LAG(a.costo_actual) OVER (ORDER BY a.fecha_actual) AS costo_anterior,
LAG(a.costo_actual) OVER (ORDER BY a.fecha_actual)-a.costo_actual as Variacion
FROM (
SELECT fecha AS fecha_actual,SUM(precio) AS costo_actual
, Id_Producto FROM Tabla_Hechos
WHERE fecha BETWEEN ‘2022-09-01’ AND ‘2023-10-01’
GROUP BY fecha,Id_Producto
) AS a
left join Dim_Producto as b
on a.Id_Producto=b.Id_Producto
where b.Producto= ‘Nafta (premium) de más de 95 Ron’
SELECT a.fecha_actual, a.costo_actual, b.Producto, LAG(a.fecha_actual) OVER (ORDER BY a.fecha_actual) AS fecha_anterior, LAG(a.costo_actual) OVER (ORDER BY a.fecha_actual) AS costo_anterior, LAG(a.costo_actual) OVER (ORDER BY a.fecha_actual)-a.costo_actual as Variacion: Esta es la declaración SELECT que especifica las columnas que se mostrarán en los resultados de la consulta. a.fecha_actual y a.costo_actual representan la fecha y el precio actual del producto. b.Producto muestra el nombre del producto. Luego, se utiliza la función LAG() junto con la cláusula OVER para obtener el valor de fecha y costo del producto en el período anterior. Finalmente, se calcula la variación del precio restando el costo actual del costo anterior.
(SELECT fecha AS fecha_actual, SUM(precio) AS costo_actual, Id_Producto FROM Tabla_Hechos WHERE fecha BETWEEN ‘2022-09-01’ AND ‘2023-10-01’ GROUP BY fecha,Id_Producto) AS a: Esta es una subconsulta que calcula el costo total del producto para cada fecha dentro del período especificado (‘2022-09-01’ y ‘2023-10-01’). Utiliza la tabla Tabla_Hechos y filtra los datos por fecha dentro del rango especificado. Luego, agrupa los resultados por fecha e Id_Producto y calcula la suma total de precios para cada combinación de fecha e Id_Producto.
LEFT JOIN Dim_Producto AS b ON a.Id_Producto=b.Id_Producto: Esta cláusula LEFT JOIN se utiliza para unir la subconsulta con la tabla Dim_Producto utilizando el Id_Producto como clave de unión. Se utiliza LEFT JOIN para asegurarse de que todas las filas de la subconsulta se incluyan en los resultados, incluso si no hay coincidencias en la tabla Dim_Producto.
WHERE b.Producto= ‘Nafta (premium) de más de 95 Ron’: Esta es la cláusula WHERE que filtra los resultados para mostrar solo el producto específico de interés, en este caso, «Nafta (premium) de más de 95 Ron».
Continuamos con la siguiente pregunta, la número 4: ¿Qué región tiene el precio medio más alto del Gas Natural Comprimido
select AVG(a.Precio) as precio,b.Producto from Tabla_Hechos as a
left join Dim_Producto as b
on a.Id_Producto=b.Id_Producto
where b.Producto=’GNC’
group by b.Producto
SELECT AVG(a.Precio) as precio, b.Producto: Esta es la declaración SELECT que especifica las columnas que se mostrarán en los resultados de la consulta. AVG(a.Precio) calcula el precio medio del producto «GNC» y lo muestra como «precio». b.Producto muestra el nombre del producto.
FROM Tabla_Hechos as a: Esta es la cláusula FROM que especifica la tabla principal desde la cual se están recuperando los datos. En este caso, se utiliza la tabla Tabla_Hechos, que generalmente contiene los hechos o transacciones principales de la base de datos.
LEFT JOIN Dim_Producto as b on a.Id_Producto=b.Id_Producto: Esta cláusula LEFT JOIN se utiliza para unir la tabla principal (Tabla_Hechos) con la tabla Dim_Producto utilizando el Id_Producto como clave de unión. Se utiliza LEFT JOIN para asegurarse de que todas las filas de la tabla Tabla_Hechos se incluyan en los resultados, incluso si no hay coincidencias en la tabla Dim_Producto.
WHERE b.Producto=’GNC’: Esta es la cláusula WHERE que filtra los resultados para mostrar solo las filas donde el nombre del producto es igual a «GNC».
GROUP BY b.Producto: Esta es la cláusula GROUP BY que agrupa los resultados por el nombre del producto. Dado que ya hemos filtrado los resultados para mostrar solo el producto «GNC», esta cláusula agrupa todos los registros bajo ese producto específico.
Con estos pasos, nos acercamos a resolver estas preguntas de negocio, utilizando T-SQL como nuestra herramienta principal.
Conclusiones destacadas sobre el uso de T-SQL para resolver preguntas de negocio:
En este análisis, hemos utilizado T-SQL como nuestra herramienta principal para abordar una serie de preguntas de negocio cruciales. A lo largo del proceso, hemos aplicado diversas funciones y metodologías de T-SQL para obtener insights valiosos de los datos. Algunas conclusiones destacadas incluyen:
- Funciones de Agregación: Utilizamos funciones como AVG() , una de varias funciones de agreacion , que para calcular el precio medio del gasoil de grado 2 en todas las provincias y obtener el promedio del precio del Gas Natural Comprimido (GNC) por región. Estas funciones nos permiten realizar cálculos estadísticos sobre conjuntos de datos para obtener métricas significativas.
- Funciones de Ventana: Empleamos funciones como, el cual es una funcion que , para los desarrolladores es una salvacion, ROW_NUMBER() y LAG() para realizar análisis comparativos y de tendencias en los datos. Estas funciones nos permiten clasificar resultados por grupos y calcular variaciones entre períodos de tiempo, lo que resulta fundamental para responder preguntas sobre cambios en los precios a lo largo del tiempo.
- Left Join: El uso de left join, puff una maravilla por que nos permitió combinar datos de diferentes tablas según condiciones específicas, lo que resultó crucial para unir información relevante y responder preguntas relacionadas con la relación entre productos, ubicaciones y empresas.
- Metodología de Análisis: Seguimos una metodología estructurada para abordar cada pregunta de negocio, que incluyó la identificación clara de la pregunta, re importante, la selección de las tablas y columnas relevantes, la aplicación de funciones y filtros apropiados, lo cual mejora nuestra logica , cuando nos toque desarrollar DAX, y la interpretación de los resultados obtenidos. Esta metodología nos permitió abordar de manera eficaz cada pregunta y obtener insights accionables a partir de los datos.
Para cerrar, el uso de T-SQL en este análisis nos permitió no solo responder preguntas específicas de negocio, sino también profundizar en la comprensión de los datos y extraer información valiosa para la toma de decisiones estratégicas. Las funciones y metodologías utilizadas demostraron ser herramientas poderosas para el análisis de datos en entornos empresariales.
Vicente Antonio Juan Magallanes.