2do Parcial

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 9

Primera Parte

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.

SELECT firstname, lastname, customerID, Country


FROM customer
WHERE Country != "Brazil";

Alternativa:
select firstname, lastname, customerid, country
FROM Customer
WHERE country is NOT "Brazil"

Alternativa:
select firstname, lastname, customerid, country
FROM Customer
WHERE country <> "Brazil"

b. Escribir una consulta que solo muestre los Clientes de Argentina.


SELECT firstname, lastname, customerID, Country
FROM customer
WHERE Country == "Argentina";

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.

SELECT DISTINCT BillingCountry


FROM Invoice
Alternativa:
SELECT billingcountry
FROM Invoice
GROUP BY billingcountry

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.

SELECT InvoiceId, sum(quantity) AS Cantidad_Articulos


FROM InvoiceLine
GROUP BY InvoiceId;

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.

SELECT BillingCountry, sum(Total) as Ventas


FROM Invoice
GROUP BY BillingCountry
ORDER BY Ventas DESC;

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.

_________ Artist.Name, __________(InvoiceLine.quantity) as Cantidad


FROM Artist JOIN Album ON
Artist.ArtistId == Album.ArtistId
______ Track ________
Album.AlbumId == Track.AlbumId
JOIN InvoiceLine ON Track.TrackId == InvoiceLine.TrackId
__________ Artist.Name
_________ Cantidad _________

SELECT Artist.Name, SUM(InvoiceLine.quantity) as Cantidad


FROM Artist JOIN Album ON
Artist.ArtistId == Album.ArtistId
JOIN Track ON
Album.AlbumId == Track.AlbumId
JOIN InvoiceLine ON Track.TrackId == InvoiceLine.TrackId
GROUP BY Artist.Name
ORDER BY Cantidad DESC

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

Levantar la base de datos en R (0.5 p):


```{r}
library(tidyverse)
library(RSQLite)
DBI::dbListTables(canciones)

canciones <- DBI::dbConnect(SQLite(), "data_raw/Chinook.db")


factura <- tbl(canciones, "Invoice")

```

Solucion a (0.5 p):

clientes <- tbl(canciones, "Customer")

clientes %>%
select(FirstName, LastName, CustomerId, Country) %>%
filter(Country != "Brazil")

Solucion b (0.5 p):

clientes %>%
select(FirstName, LastName, CustomerId, Country) %>%
filter(Country == "Argentina")

Solución e (0.5 p):

invoice_line <- tbl(db, "InvoiceLine")


invoice_line %>%
group_by(InvoiceId) %>%
summarise(sum(Quantity))

Solución d (0.5 p):

invoice <- tbl(db, "Invoice")


Invoice %>%
filter (year(InvoiceDate) == '2009') %>%
summarise(total_ventas = sum(Total))

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))

También podría gustarte