Guia de ejercicios Nro 5
En la presente guía vamos a continuar con la ejercitación de los conceptos de SQL vistos
en clase. En particular vamos a centrarnos en realizar consultas sobre los datos aplanados
de las tablas Invoice, Customer y Employee en una única tabla.
Aplanar datos en SQL significa combinar información de varias tablas en una sola tabla o
vista para simplificar su consulta. Esto puede resultar útil para generar informes complejos y
consultas, ya que permite obtener toda la información necesaria en un solo lugar sin tener
que realizar múltiples consultas y combinar manualmente los resultados.
Aplanar datos también puede mejorar el rendimiento de las consultas al reducir la cantidad
de operaciones de unión (JOIN) necesarias para obtener la información deseada. Esto se
debe a que unir múltiples tablas puede ser un proceso costoso en términos de rendimiento,
especialmente en bases de datos grandes o complejas. Aplanar datos puede reducir la
cantidad de tablas involucradas en la consulta, lo que puede mejorar el rendimiento general
de la base de datos.
En resumen, aplanar datos en SQL puede simplificar y mejorar la eficiencia de las consultas
al reducir la cantidad de tablas involucradas y al permitir que la información necesaria esté
disponible en una sola tabla o vista.
Para crear la tabla flat_data con ciertos datos de las tres tablas involucradas, podemos
utilizar la siguiente consulta en SQL:
-WITH
-VIEW queda actualizada constantemente
-TABLA (TEMPORAL O PERMANENTE) queda desactualizada
Realizar las siguientes vistas:
Se utilizan las tablas “customer”, “invoice” y “employee”
1. Aplanar datos de todas las tablas
2. Aplanar datos de todas las tablas y filtrar por el Empleado ID = 2:
3. Aplanar datos de todas las tablas y filtrar por un cliente específic (Customer.FirstName =
'Michelle' AND Customer.LastName = 'Brooks’).
4. Aplanar datos de todas las tablas y agrupar por país
5. Aplanar datos de todas las tablas y filtrar por un rango de fechas (Año 2012).
7. Aplanar datos de todas las tablas y mostrar solo el nombre y apellido del cliente, la fecha
de factura y el total:
8. Aplanar datos de todas las tablas y mostrar sólo el nombre y apellido del cliente y el total
de ventas:
9. Aplanar datos de todas las tablas y mostrar sólo el nombre y apellido del empleado y el
total de ventas que generaron
10. Mostrar en una misma vista el nombre y apellido de los clientes, el nombre y apellido del
empleado a cargo de cada cliente para cada invoice junto con el total de cada invoice.
Crear la siguiente Vista y resolver consultas
SELECT
c.FirstName || ' ' || c.LastName AS CustomerName,
e.FirstName || ' ' || e.LastName AS EmployeeName,
i.InvoiceDate,
i.Total
FROM
Customer c
JOIN Invoice i ON c.CustomerId = i.CustomerId
JOIN Employee e ON c.SupportRepID = e.EmployeeId;
Esta consulta debe crear una nueva vista llamada flat_data, que contiene una fila para cada
factura, con el nombre del cliente, el nombre del empleado que la procesó, la fecha y el
total. A continuación, veremos ejercicios que (casi) exclusivamente utilizan la información de
esta nueva tabla y vemos que consultas que antes habrían requerido de dos JOIN se
simplifican considerablemente.
1.
¿Cuáles son los nombres de los clientes que hicieron una compra en 2010?
2.
¿Cuál es el total de ventas de cada empleado?
3.
¿Cuál es el número total de ventas realizadas en marzo de 2012?
4.
¿Cuál es el nombre del empleado que vendió más en 2013?
5.
¿Cuál es el total de ventas realizadas por cada país? (se necesita aquí un único Join)
6.
¿Cuál es el promedio de ventas por cliente en 2011?
7.
¿Cuál es el número total de clientes que hicieron una compra en mayo de 2013?
8.
¿Cuál es el nombre del cliente que realizó la compra más grande?
Opción 1
Opción 2
9.
¿Cuál es el nombre del empleado que procesó la compra más grande?
10.
¿Cuáles son los nombres de los clientes que compraron más de una vez en el mismo día?
No hay
11.
¿Cuál es el mes con el mayor número de ventas en 2012?
Tip: strftime('%m', InvoiceDate) AS Month
12.
¿Cuál es el número de ventas por mes en 2013?