Practiquemos lo que aprendimos sobre los JOINS combinando filas de diferentes tablas.
Supongamos que eres un analista de datos una plataforma para compartir viajes en carro (RideSharing). Para un proyecto, y se le dijo que creara tres tablas
Warning: El objetivo de esta primera parte es entender que a veces debemos limpiar, arreglar, modificar, rellenar algunos datos, antes de subirlos a nuestra base de datos. Normalmente, nosotros como data scientists recibimos archivos .db
, .sqlite
, .csv
que podria venir ya listo para trabajar, pero otras veces no contamos con esa suerte :). Por tanto, tenga en cuenta donde van las comas, los punto y comas, los espacios, los nils, etc. Recomendamos usar un editor de texto como Atom o Sublime (y usar los atajos que proveen) para facilitar la tarea de manipulacion de datos. Más adelante veremos otras herramientas, por ahora familiaricemonos con la manipulacion de datos directamente en sql.
- trips
id INTEGER
date TEXT
pickup TEXT
dropoff TEXT
rider_id INTEGER
car_id INTEGER
type TEXT
cost INTEGER
- riders
id INTEGER
first TEXT
last TEXT
username TEXT
rating INTEGER
total_trips INTEGER
referred INTEGER
- cars
id INTEGER
model TEXT
OS TEXT
status TEXT
trips_completed INTEGER
Y estos son los datos que debe organizar para crear los registros de las 3 tablas. la persona que le dio los datos no sabe mucho sobre SQL, y simplemente descargo estros datos de un excel, debemos entonces organizarlos para crear los registros correctamente en nuestras tablas
1- trips
1001 2017-12-05 06:45 07:10 102 1 X 28.66
1002 2017-12-05 08:00 08:15 101 3 POOL 9.11
1003 2017-12-05 09:30 09:50 104 4 X 24.98
1004 2017-12-05 13:40 14:05 105 1 X 31.27
1005 2017-12-05 15:15 16:00 103 2 POOL 18.95
1006 2017-12-05 18:20 18:55 101 3 XL 78.52
- riders
101 Sonny Li @sonnynomnom 4.66 352
102 Laura Breiman @lauracle 4.99 687 101
103 Kassa Korley @kassablanca 4.63 42
104 Yakov Kagan @yakovkagan 4.52 1910 103
- cars
1 Ada Ryzac active 82
2 Ada Ryzac active 30
3 Turing XL Ryzac active 164
4 Akira Finux maintenance 22
Ejercicios
- Examine cada tabla seleccionando todas las columnas de cada uno
- Pruebe una simple CROSS JOIN entre riders y cars
- Supongamos que queremos crear una bitácora de viajes con los viajes y sus usuarios.
Busca las columnas para unir entre los trips y los riders y combina las dos tablas usando un LEFT JOIN. Deja que los trips sean la tabla de la izquierda.
-
Supongamos que queremos crear un vínculo entre los trips y los cars utilizados durante esos viajes. Busca las columnas a unir y combina la tabla de trips y cars usando un INNER JOIN.
-
Tenemos nueva datade riders! Hay tres nuevos usuarios este mes.
id first last username rating total_trips referred
105 Zach Sims @zsims 4.85 787
106 Eric Vaught @posturelol 4.96 54 101
107 Jilly Beans @jillkuzmin 4.7 32 101
Crea la nueva tabla como riders2
y haga un UNION sobre esta nueva tabla.
-
¿Cuál es el costo promedio de un viaje?
-
La empresa está buscando hacer una campaña de correo electrónico para todos los usuarios irregulares.
¡Encuentra a todos los riders que han usado la aplicacion menos de 500 veces!
- Calcula el número de cars que están activos.
- Es el momento de hacer una llamada de seguridad de los carros que han estado en carretera durante un tiempo.
Escriba una consulta que encuentre los dos carros que tienen los viajes más trips_completed