4.3 KiB
Title: Airplanes & Airports
Type: Lab
Created By: Matt Huntington
Modified By: Jerrica Bobadilla
Setup
-
Create a new database called
flights, connect to it, and run the following code (given to you in theflights.sqlfile):- Note: To create a new postgres database without connecting to psql, in terminal bash just run
createdb [databasename]where [databasename] is whatever you want to name your new database. - Note 2: After you create the database, you can then run this .sql file using
psql <db_name> -f <path_to_file>
CREATE TABLE airlines ( id int, name varchar(255) DEFAULT NULL, alias varchar(255) DEFAULT NULL, iata varchar(255) DEFAULT NULL, icao varchar(255) DEFAULT NULL, callsign varchar(255) DEFAULT NULL, country varchar(255) DEFAULT NULL, active varchar(255) DEFAULT NULL ); CREATE TABLE airports ( id int, name varchar(255) DEFAULT NULL, city varchar(255) DEFAULT NULL, country varchar(255) DEFAULT NULL, iata_faa varchar(255) DEFAULT NULL, icao varchar(255) DEFAULT NULL, latitude varchar(255) DEFAULT NULL, longitude varchar(255) DEFAULT NULL, altitude varchar(255) DEFAULT NULL, utc_offset varchar(255) DEFAULT NULL, dst varchar(255) DEFAULT NULL, tz varchar(255) DEFAULT NULL ); CREATE TABLE routes ( airline_code varchar(255) DEFAULT NULL, airline_id int DEFAULT NULL, origin_code varchar(255) DEFAULT NULL, origin_id int DEFAULT NULL, dest_code varchar(255) DEFAULT NULL, dest_id int DEFAULT NULL, codeshare varchar(255) DEFAULT NULL, stops int DEFAULT NULL, equipment varchar(255) DEFAULT NULL ); - Note: To create a new postgres database without connecting to psql, in terminal bash just run
-
Connect to your
flightsdatabase using your postgres app -
Once inside the psql database (you'll know you're in the right one if your terminal says
flights=#), run the following lines individually
NOTE: You will have to path to the csv files from wherever the postgres app opens up your database in terminal. For example, if it opens the postgres terminal at the root (~) and my SEIR-Ewoks folder is on my desktop, I would path to routes.csv like so: ./Desktop/SEIR-Ewoks/unit_4/w10d02/student_labs/lab_2/routes.csv. Your path will look different depending on where your classroom repo is located.
If you are able to use the
psql flightsterminal command to open the database, you can run that command from inside todays student_labs/afternoon folder and just copy paste the commands as given below.
\copy routes FROM 'routes.csv' DELIMITER ',' CSV
- You should get back
COPY 67663if you were successful
\copy airports FROM 'airports.csv' DELIMITER ',' CSV
- You should get back
COPY 8107if you were successful
\copy airlines FROM 'airlines.csv' DELIMITER ',' CSV
- You should get back
COPY 6048if you were successful
- You should now have seeded three tables with flight data!
Activity
Our main goal is to find out how many flights go from NYC to Paris.
Hints
-
The routes table has a column called
origin_idand another calleddest_id. These map to theidcolumn in the airport table. Think about how to treat theids as foreign keys. -
You're going to have to use the airports table twice in the same SQL statement. In order to tell which airport is the
destinationand which is theorigin, you're going to have to temporarily rename the airports table like so:/* note that once you rename a table, you MUST refer to it by its new name */ SELECT * FROM airports AS origin WHERE origin.city = 'New York'; /* later on in the SQL statement, when dealing with the destination, you should do the same for airports AS destination */ -
Note that you'll only need to use the routes and airports tables
-
Think about using aggregation and inner joins
Steps to think about
- Find all airports that originate from New York
- Find all destination airports in Paris
- Find out how many routes originate from New York
- Find out how many routes have destinations in Paris
- Try to decide which statements are necessary and find how to combine them to find out how many routes originate from New York and land in Paris!
Stretch Goals
- Do this so that just the number appears as the result of only one SQL statement
- Which airlines travel from NYC to Paris?
- Find all the flights that leave NYC. Give a list of how many go to each destination city.
