2do Parcial
2do Parcial
2do Parcial
1. En el campus buscar el archivo: SQLite Chinook Database, abrirlo en https://sqliteonline.com/ y ejecutarlo para crear una base de
datos con varias tablas (va a tardar un ratito).
2. Para cada punto de esta primera parte guardar el SQL en un solo archivo como <apellido>_PrimeraParteParcial.sql
3. Este es el DER de la base de datos, usarlo como apoyo para resolver los ejercicios.
Invoice = Factura
InvoiceLine = Detalle de la factura
Customer = Cliente
Track = Pista
MediaType = Tipo de Medio
Employee = Empleado
Genre = Género
Artist = Artista
Album = Album
PlayList = lista de reproducción
PlaylistTrack = pistas por lista de reproducción
4. Ejercicios:
a. Escribir una consulta que muestre a los clientes que no se encuentran en Brasil. Solo queremos ver sus nombres
completos, ID de cliente y país.
Alternativa:
select firstname, lastname, customerid, country
FROM Customer
WHERE country is NOT "Brazil"
Alternativa:
select firstname, lastname, customerid, country
FROM Customer
WHERE country <> "Brazil"
Alternativa
SELECT *
FROM customer
WHERE Country == "Argentina"
c. Escribir una consulta que muestre una lista única de países de facturación de la tabla Invoice.
d. Escribir una consulta que calcule el total de ventas para el año 2009.
SELECT InvoiceDate AS Year, sum(Total) AS Total_Ventas
FROM Invoice
WHERE InvoiceDate LIKE '2009%'
Alternativa
SELECT round(sum(total),2)
FROM Invoice
WHERE invoicedate>="2009-01-01" AND invoicedate<"2010-01-01"
Alternativa:
SELECT round(sum(total),2) as "total ventas 2009"
FROM Invoice
WHERE invoicedate BETWEEN "2009-01-01 00:00:00" and "2009-12-31 23:59:59"
e. Mirando la tabla InvoiceLine, escribir una consulta que cuente la cantidad de artículos para cada Factura.
Alternativa
SELECT InvoiceId, count(quantity) AS Cantidad_Articulos
FROM InvoiceLine
GROUP BY InvoiceId;
f.Escriba una consulta que muestre el Id de la factura y el nombre de la pista de cada pista vendida en la factura (esta
información se encuentra en el detalle de la factura).
SELECT InvoiceId, Name
FROM InvoiceLine
JOIN Track ON InvoiceLine.TrackId = Track.TrackId
GROUP BY Name; # Tambien vale sin el group by
g. Escribir una consulta que muestre el total de ventas por país. El país que más gasta debe aparecer primero y el que
menos gasta debe aparecer último.
h. Modificar la consulta anterior para mostrar el máximo, el mínimo y el promedio de gasto general.
SELECT billingcountry, sum(total) as totalventas, max(total) as maximo, min(total) as mini, avg(total) as promedio
FROM Invoice
GROUP by billingcountry
order by totalventas DESC
i. Completar el siguiente código SQL para que la consulta muestre los artistas de acuerdo a la cantidad de pistas que
han vendido, presentando los que más vendieron primero y los que menos vendieron últimos. Se desea ver el nombre
del artista y la cantidad de pistas vendidas.
Segunda Parte
1. Para cada punto de esta segunda parte guardar el código de R en un solo archivo como <apellido>_SegundaParteParcial.R o .Rmd
2. Entrar a RStudio y cargar los paquetes tidyverse y RSQLite.
3. Cargar la base de datos Chinook.db que se encuentra en el campus usando el código para leer bases de datos utilizado en clase.
4. Escribir como código de R las consultas de los puntos: a, b, e y d de la primera parte. Para el punto g, explorar la función arrange().
Segunda parte
```
clientes %>%
select(FirstName, LastName, CustomerId, Country) %>%
filter(Country != "Brazil")
clientes %>%
select(FirstName, LastName, CustomerId, Country) %>%
filter(Country == "Argentina")
Alternativa:
invoce %>%
select(InvoiceDate,Total) %>%
filter(InvoiceDate >='2009-01-01 00:00:00'& InvoiceDate <'2010-01-01 00:00:00') %>%
summarise(total_ventas_2009=sum(Total))
Solución g:
(Por si alguien se inspiró y lo resolvió)
factura %>%
group_by(BillingCountry) %>%
summarise(Ventas = sum(Total)) %>%
arrange(desc(Ventas))