From 79ee5bb1f98deb43dd65ace0787df3305d9336d9 Mon Sep 17 00:00:00 2001 From: Sally Steuterman Date: Tue, 2 Apr 2024 15:29:37 -0500 Subject: [PATCH 1/3] Outline of chapter --- content/sql-part-3/_index.md | 21 +++++++++++++++++++ content/sql-part-3/exercises/_index.md | 8 +++++++ content/sql-part-3/next-steps.md | 8 +++++++ content/sql-part-3/reading/_index.md | 10 +++++++++ .../sql-part-3/reading/full-joins/_index.md | 8 +++++++ .../sql-part-3/reading/inner-joins/_index.md | 8 +++++++ content/sql-part-3/reading/intro/_index.md | 8 +++++++ .../reading/left-right-joins/_index.md | 8 +++++++ content/sql-part-3/studio/_index.md | 8 +++++++ 9 files changed, 87 insertions(+) create mode 100644 content/sql-part-3/_index.md create mode 100644 content/sql-part-3/exercises/_index.md create mode 100644 content/sql-part-3/next-steps.md create mode 100644 content/sql-part-3/reading/_index.md create mode 100644 content/sql-part-3/reading/full-joins/_index.md create mode 100644 content/sql-part-3/reading/inner-joins/_index.md create mode 100644 content/sql-part-3/reading/intro/_index.md create mode 100644 content/sql-part-3/reading/left-right-joins/_index.md create mode 100644 content/sql-part-3/studio/_index.md diff --git a/content/sql-part-3/_index.md b/content/sql-part-3/_index.md new file mode 100644 index 00000000..d49945a7 --- /dev/null +++ b/content/sql-part-3/_index.md @@ -0,0 +1,21 @@ ++++ +pre = "20. " +chapter = true +title = "SQL Part 3" +date = 2024-04-02T14:13:14-05:00 +draft = false +weight = 20 ++++ + +## Learning Objectives + +1. Understand what a join is. +1. Write queries that use inner, full, left, and right joins. +1. Explain the differences between the types of joins listed above. +1. Use the `HAVING` clause with joins to filter result sets. + +## Key Terminology + +## Content Links + +{{% children %}} diff --git a/content/sql-part-3/exercises/_index.md b/content/sql-part-3/exercises/_index.md new file mode 100644 index 00000000..af0a9afa --- /dev/null +++ b/content/sql-part-3/exercises/_index.md @@ -0,0 +1,8 @@ ++++ +title = "Exercises" +date = 2021-10-01T09:28:27-05:00 +draft = false +weight = 2 ++++ + +## Next Steps diff --git a/content/sql-part-3/next-steps.md b/content/sql-part-3/next-steps.md new file mode 100644 index 00000000..84511e46 --- /dev/null +++ b/content/sql-part-3/next-steps.md @@ -0,0 +1,8 @@ ++++ +title = "Next Steps" +date = 2021-10-01T09:28:27-05:00 +draft = false +weight = 4 ++++ + +## Next Steps diff --git a/content/sql-part-3/reading/_index.md b/content/sql-part-3/reading/_index.md new file mode 100644 index 00000000..c895d5c8 --- /dev/null +++ b/content/sql-part-3/reading/_index.md @@ -0,0 +1,10 @@ ++++ +title = "Reading" +date = 2024-04-02T14:13:14-05:00 +draft = false +weight = 1 ++++ + +## Reading Content + +{{% children %}} diff --git a/content/sql-part-3/reading/full-joins/_index.md b/content/sql-part-3/reading/full-joins/_index.md new file mode 100644 index 00000000..13359fcc --- /dev/null +++ b/content/sql-part-3/reading/full-joins/_index.md @@ -0,0 +1,8 @@ ++++ +title = "Full Outer Joins" +date = 2024-04-02T14:13:14-05:00 +draft = false +weight = 4 ++++ + +Finally, write a full outer join \ No newline at end of file diff --git a/content/sql-part-3/reading/inner-joins/_index.md b/content/sql-part-3/reading/inner-joins/_index.md new file mode 100644 index 00000000..14fb89c7 --- /dev/null +++ b/content/sql-part-3/reading/inner-joins/_index.md @@ -0,0 +1,8 @@ ++++ +title = "Inner Joins" +date = 2024-04-02T14:13:14-05:00 +draft = false +weight = 2 ++++ + +Write an inner join and be able to explain what makes it special \ No newline at end of file diff --git a/content/sql-part-3/reading/intro/_index.md b/content/sql-part-3/reading/intro/_index.md new file mode 100644 index 00000000..2ce719a8 --- /dev/null +++ b/content/sql-part-3/reading/intro/_index.md @@ -0,0 +1,8 @@ ++++ +title = "What is a Join?" +date = 2024-04-02T14:13:14-05:00 +draft = false +weight = 1 ++++ + +What is a join and why would we need them? \ No newline at end of file diff --git a/content/sql-part-3/reading/left-right-joins/_index.md b/content/sql-part-3/reading/left-right-joins/_index.md new file mode 100644 index 00000000..e44cd2c1 --- /dev/null +++ b/content/sql-part-3/reading/left-right-joins/_index.md @@ -0,0 +1,8 @@ ++++ +title = "Left and Right Joins" +date = 2024-04-02T14:13:14-05:00 +draft = false +weight = 3 ++++ + +Write a left and right join and be able to explain why one might use them \ No newline at end of file diff --git a/content/sql-part-3/studio/_index.md b/content/sql-part-3/studio/_index.md new file mode 100644 index 00000000..95e3ec2d --- /dev/null +++ b/content/sql-part-3/studio/_index.md @@ -0,0 +1,8 @@ ++++ +title = "Studio" +date = 2021-10-01T09:28:27-05:00 +draft = false +weight = 3 ++++ + +## Studio From 0c2b9d4e9f741955259c014b478cb9f33226ec5d Mon Sep 17 00:00:00 2001 From: Sally Steuterman Date: Wed, 3 Apr 2024 15:46:48 -0500 Subject: [PATCH 2/3] Working on rough draft --- content/sql-part-3/_index.md | 2 + content/sql-part-3/exercises/_index.md | 14 ++++++- content/sql-part-3/next-steps.md | 2 +- .../sql-part-3/reading/full-joins/_index.md | 34 ++++++++++++++++- .../sql-part-3/reading/inner-joins/_index.md | 18 ++++++++- content/sql-part-3/reading/intro/_index.md | 31 ++++++++++++++- .../reading/left-right-joins/_index.md | 38 ++++++++++++++++++- content/sql-part-3/studio/_index.md | 25 +++++++++++- 8 files changed, 157 insertions(+), 7 deletions(-) diff --git a/content/sql-part-3/_index.md b/content/sql-part-3/_index.md index d49945a7..b049a11a 100644 --- a/content/sql-part-3/_index.md +++ b/content/sql-part-3/_index.md @@ -16,6 +16,8 @@ weight = 20 ## Key Terminology +1. join +1. inner join ## Content Links {{% children %}} diff --git a/content/sql-part-3/exercises/_index.md b/content/sql-part-3/exercises/_index.md index af0a9afa..3b918a82 100644 --- a/content/sql-part-3/exercises/_index.md +++ b/content/sql-part-3/exercises/_index.md @@ -5,4 +5,16 @@ draft = false weight = 2 +++ -## Next Steps +## Getting Started + +Fork this [GitHub repository](https://github.com/launchcodeeducation/SQL-Part-3-Exercises) and clone to your computer. + +## In Your Notebook + +Open Azure Data Studio and connect to the `BookDB`. + +## Submitting Your Work + +When finished make sure to push your changes up to GitHub. + +Copy the link to your GitHub repository and paste it into the submission box in Canvas for **Exercises: SQL Part 3** and click *Submit*. diff --git a/content/sql-part-3/next-steps.md b/content/sql-part-3/next-steps.md index 84511e46..617177d3 100644 --- a/content/sql-part-3/next-steps.md +++ b/content/sql-part-3/next-steps.md @@ -5,4 +5,4 @@ draft = false weight = 4 +++ -## Next Steps +1. [Joins](https://learn.microsoft.com/en-us/sql/relational-databases/performance/joins?view=sql-server-ver16) diff --git a/content/sql-part-3/reading/full-joins/_index.md b/content/sql-part-3/reading/full-joins/_index.md index 13359fcc..18a00a4a 100644 --- a/content/sql-part-3/reading/full-joins/_index.md +++ b/content/sql-part-3/reading/full-joins/_index.md @@ -5,4 +5,36 @@ draft = false weight = 4 +++ -Finally, write a full outer join \ No newline at end of file +Joining two tables with a **full outer join** gives us a result set that +includes all records from both tables. Full outer joins are important to SQL, +but the syntax is not supported in MySQL. Instead, to achieve a full outer +join, you have to work with a left outer join and a right outer join. To show +what a full outer join looks like in other types of SQL, we have simulated some +possible syntax below. + +Now that another event planner has joined Mary's company, to get all of the +events run by the company in August, we can use a full outer join to combine +`mary_events` and `leah_events`. + +```sql {linenos=table} +SELECT * +FROM mary_events +FULL OUTER JOIN leah_events ON mary_events.month = leah_events.month +WHERE mary_events.month = 08; +``` + +.. figure:: figures/fullouterjoin.png + :alt: Venn diagram with the entirety of both circles highlighted. + +The Venn diagram above shows the result set highlighted in blue. + +If you do want to try out a full outer join, the syntax to simulate it looks some like this: + +```sql {linenos=table} +SELECT * FROM table_a LEFT JOIN table_b ON table_a.column_name_1 = table_b.column_name_1 +UNION +SELECT * FROM table_a RIGHT JOIN table_b ON table_a.column_name_1 = table_b.column_name_2; +``` + +`UNION` is used to bring together the result sets of 2 `SELECT` queries. +Check out the [documentation](https://dev.mysql.com/doc/refman/8.0/en/union.html) for more information on how `UNION` works. \ No newline at end of file diff --git a/content/sql-part-3/reading/inner-joins/_index.md b/content/sql-part-3/reading/inner-joins/_index.md index 14fb89c7..ccff2c0f 100644 --- a/content/sql-part-3/reading/inner-joins/_index.md +++ b/content/sql-part-3/reading/inner-joins/_index.md @@ -5,4 +5,20 @@ draft = false weight = 2 +++ -Write an inner join and be able to explain what makes it special \ No newline at end of file +Joining two tables with an **inner join** produces a result set that only +includes the values that are present in *both* tables. + +If we use an inner join to combine `johnson_wedding` and `johnson_vow_renewal` in a query, we can see what guests are going to both the vow renewal and the wedding. + +```sql {linenos=table} +SELECT last_name, first_name +FROM johnson_vow_renewal +INNER JOIN johnson_wedding ON johnson_vow_renewal.guest_id = johnson_wedding.guest_id; +``` + +This query will give us a result set of the first and last names of the guests from the `johnson_vow_renewal` table that are also in the `johnson_wedding` table. + +.. figure:: figures/innerjoin.png + :alt: Venn diagram highlighting just the center where the two circles meet. + +The Venn diagram above shows the result set highlighted in blue. \ No newline at end of file diff --git a/content/sql-part-3/reading/intro/_index.md b/content/sql-part-3/reading/intro/_index.md index 2ce719a8..df7bb231 100644 --- a/content/sql-part-3/reading/intro/_index.md +++ b/content/sql-part-3/reading/intro/_index.md @@ -5,4 +5,33 @@ draft = false weight = 1 +++ -What is a join and why would we need them? \ No newline at end of file +A **join** combines two tables into one result set. +We can use joins when we want to query two tables at the same time. +Whenever we join two tables, we have to specify the condition upon which the +tables need to be joined. + +In SQL, there are four different types of joins: + +1. Inner Join +1. Left Outer Join +1. Right Outer Join +1. Full Outer Join + +No matter which join you are working with, the general syntax for the query +looks like so: + +```sql {linenos=table} +SELECT column_name_1, column_name_2, .... +FROM table_a +TYPEOFJOIN JOIN table_b ON table_a.column_name_1 = table_b.column_name_1; +``` + +In this general query, we specified what columns we want (or we could have used +the `*` to read data from all columns). We have also specified that +`table_a` is the *left* table and that `table_b` is the *right* table. On +line 3, we need to include the type of join as part of our query with the +`JOIN` keyword and the condition upon which we are joining the tables. Our +condition follows the `ON` keyword and tells SQL what we believe to be +matching records. This may mean we want to join on matching customer ids or +matching dollar amounts or matching dates depending on the tables we are +working with and what questions we need to answer. \ No newline at end of file diff --git a/content/sql-part-3/reading/left-right-joins/_index.md b/content/sql-part-3/reading/left-right-joins/_index.md index e44cd2c1..04eab9bf 100644 --- a/content/sql-part-3/reading/left-right-joins/_index.md +++ b/content/sql-part-3/reading/left-right-joins/_index.md @@ -5,4 +5,40 @@ draft = false weight = 3 +++ -Write a left and right join and be able to explain why one might use them \ No newline at end of file +## Left Outer Join + +Joining two tables with a **left outer join** gives us a result set which +includes all values in the left table and any matching records from the right +table. + +If we use a left outer join to combine `johnson_wedding` and `johnson_vow_renewal` in a query, the result set includes all of the guests invited to the wedding and any guests who were also invited to the vow renewal. + +```sql {linenos=table} +SELECT last_name, first_name +FROM johnson_wedding +LEFT JOIN johnson_vow_renewal ON johnson_wedding.guest_id = johnson_vow_renewal.guest_id; +``` + +.. figure:: figures/leftouterjoin.png + :alt: Venn diagram highlighting the center and entirety of left circle. + +The Venn diagram above shows the result set highlighted in blue. + +## Right Outer Join + +Joining two tables with a **right outer join** gives us a result set that +includes all values in the right table and any matching records from the left +table. + +If we use a right inner join to combine `johnson_wedding` and `johnson_vow_renewal` in a query, the result set includes all of the guests that were invited to the vow renewal and any guests who were also invited to the wedding. + +```sql {linenos=table} +SELECT last_name, first_name +FROM johnson_wedding +RIGHT JOIN johnson_vow_renewal ON johnson_wedding.guest_id = johnson_vow_renewal.guest_id; +``` + +.. figure:: figures/rightouterjoin.png + :alt: Venn diagram highlighting the center and entirety of right circle. + +The Venn diagram above shows the result set highlighted in blue. diff --git a/content/sql-part-3/studio/_index.md b/content/sql-part-3/studio/_index.md index 95e3ec2d..233ba7ef 100644 --- a/content/sql-part-3/studio/_index.md +++ b/content/sql-part-3/studio/_index.md @@ -5,4 +5,27 @@ draft = false weight = 3 +++ -## Studio +## Getting Started + +For this weeks studio fork this [GitHub repository](https://github.com/launchcodeeducation/SQL-Part-3-Studio) and clone to your computer. + +In Azure Data Studio, click on the open button and navigate to where you saved the git repository you just cloned and open the notebook. + +## In Your Notebook + +The focus of this studio is to get more familiar with `JOIN` statements and to practice using them. + +1. Break into small groups and work together to answer the questions. +1. Each member of the group should be coding along in their own notebooks. +1. In Part 2 of the studio, each person will pick their own month and create two events or promotions, creating queries to support their choices in their own notebook. +1. Each member of the group should have different questions and queries. + +## Present to the Class + +When the whole class comes back together, each person will present one of the events they created and the query used to solve it. + +## Submitting Your Work + +When finished make sure to push your changes up to GitHub. + +Copy the link to your GitHub repository and paste it into the submission box in Canvas for **Studio: SQL Part 3** and click *Submit*. \ No newline at end of file From 9f88e8991874cf47c79a765a008bc0524045ab26 Mon Sep 17 00:00:00 2001 From: Sally Steuterman Date: Wed, 10 Apr 2024 15:13:25 -0500 Subject: [PATCH 3/3] Final draft of chapter --- content/sql-part-3/_index.md | 19 +++++++ content/sql-part-3/exercises/_index.md | 6 +- content/sql-part-3/next-steps.md | 3 + .../sql-part-3/reading/full-joins/_index.md | 31 +++++------ .../full-joins/pictures/fullouterjoin.png | Bin 0 -> 19523 bytes .../sql-part-3/reading/inner-joins/_index.md | 52 ++++++++++++++++-- .../inner-joins/pictures/innerjoin.png | Bin 0 -> 28885 bytes content/sql-part-3/reading/intro/_index.md | 4 +- .../reading/left-right-joins/_index.md | 29 +++++++--- .../pictures/leftouterjoin.png | Bin 0 -> 25527 bytes .../pictures/rightouterjoin.png | Bin 0 -> 27371 bytes content/sql-part-3/studio/_index.md | 4 +- 12 files changed, 112 insertions(+), 36 deletions(-) create mode 100644 content/sql-part-3/reading/full-joins/pictures/fullouterjoin.png create mode 100755 content/sql-part-3/reading/inner-joins/pictures/innerjoin.png create mode 100755 content/sql-part-3/reading/left-right-joins/pictures/leftouterjoin.png create mode 100755 content/sql-part-3/reading/left-right-joins/pictures/rightouterjoin.png diff --git a/content/sql-part-3/_index.md b/content/sql-part-3/_index.md index b049a11a..9f3fd324 100644 --- a/content/sql-part-3/_index.md +++ b/content/sql-part-3/_index.md @@ -9,6 +9,8 @@ weight = 20 ## Learning Objectives +Upon completing all the content in this chapter, you should be able to do the following: + 1. Understand what a join is. 1. Write queries that use inner, full, left, and right joins. 1. Explain the differences between the types of joins listed above. @@ -16,8 +18,25 @@ weight = 20 ## Key Terminology +Here is a list of key terms for this chapter broken down by the page the term first appears on. Make note of each term and its definition. + +### What is a Join? + 1. join + +### Inner Joins + 1. inner join + +### Left and Right Joins + +1. left outer join +1. right outer join + +### Full Outer Joins + +1. full outer join + ## Content Links {{% children %}} diff --git a/content/sql-part-3/exercises/_index.md b/content/sql-part-3/exercises/_index.md index 3b918a82..39b7397f 100644 --- a/content/sql-part-3/exercises/_index.md +++ b/content/sql-part-3/exercises/_index.md @@ -7,14 +7,14 @@ weight = 2 ## Getting Started -Fork this [GitHub repository](https://github.com/launchcodeeducation/SQL-Part-3-Exercises) and clone to your computer. +Open up the `SQL-Part-3-Exercises.ipynb` notebook in `data-analysis-projects/sql-part-3/exercises` using Azure Data Studio. ## In Your Notebook -Open Azure Data Studio and connect to the `BookDB`. +Connect to `BooksDB` before starting work on the exercises. ## Submitting Your Work -When finished make sure to push your changes up to GitHub. +When finished, make sure to push your changes up to GitHub. Copy the link to your GitHub repository and paste it into the submission box in Canvas for **Exercises: SQL Part 3** and click *Submit*. diff --git a/content/sql-part-3/next-steps.md b/content/sql-part-3/next-steps.md index 617177d3..94edbde8 100644 --- a/content/sql-part-3/next-steps.md +++ b/content/sql-part-3/next-steps.md @@ -5,4 +5,7 @@ draft = false weight = 4 +++ +You are now ready to go on to learning more about complex SQL queries. If you would like some additional resources on joins, here are a few of our favorites: + 1. [Joins](https://learn.microsoft.com/en-us/sql/relational-databases/performance/joins?view=sql-server-ver16) +1. [SQL Join Types](https://www.metabase.com/learn/sql-questions/sql-join-types) \ No newline at end of file diff --git a/content/sql-part-3/reading/full-joins/_index.md b/content/sql-part-3/reading/full-joins/_index.md index 18a00a4a..5b04ec13 100644 --- a/content/sql-part-3/reading/full-joins/_index.md +++ b/content/sql-part-3/reading/full-joins/_index.md @@ -5,12 +5,8 @@ draft = false weight = 4 +++ -Joining two tables with a **full outer join** gives us a result set that -includes all records from both tables. Full outer joins are important to SQL, -but the syntax is not supported in MySQL. Instead, to achieve a full outer -join, you have to work with a left outer join and a right outer join. To show -what a full outer join looks like in other types of SQL, we have simulated some -possible syntax below. +Finally, we have a full outer join. Joining two tables with a **full outer join** gives us a result set that +includes all records from both tables with null values for unmatched rows. Now that another event planner has joined Mary's company, to get all of the events run by the company in August, we can use a full outer join to combine @@ -23,18 +19,21 @@ FULL OUTER JOIN leah_events ON mary_events.month = leah_events.month WHERE mary_events.month = 08; ``` -.. figure:: figures/fullouterjoin.png - :alt: Venn diagram with the entirety of both circles highlighted. +![Venn diagram with the entirety of both circles highlighted](./pictures/fullouterjoin.png) The Venn diagram above shows the result set highlighted in blue. -If you do want to try out a full outer join, the syntax to simulate it looks some like this: +## Check Your Understanding -```sql {linenos=table} -SELECT * FROM table_a LEFT JOIN table_b ON table_a.column_name_1 = table_b.column_name_1 -UNION -SELECT * FROM table_a RIGHT JOIN table_b ON table_a.column_name_1 = table_b.column_name_2; -``` +{{% notice green Question %}} + +What does a `FULL JOIN` do? + +1. Returns results with matching rows in both tables +1. Returns results with all the rows from the left table with null values for unmatched rows from the right table +1. Returns results with all the rows from the right table with null values for unmatched rows from the left table +1. Returns results from all the rows from both tables with null values filled in for all unmatched rows + +{{% /notice %}} -`UNION` is used to bring together the result sets of 2 `SELECT` queries. -Check out the [documentation](https://dev.mysql.com/doc/refman/8.0/en/union.html) for more information on how `UNION` works. \ No newline at end of file + \ No newline at end of file diff --git a/content/sql-part-3/reading/full-joins/pictures/fullouterjoin.png b/content/sql-part-3/reading/full-joins/pictures/fullouterjoin.png new file mode 100644 index 0000000000000000000000000000000000000000..5e07ff17595ba07580c7a3e01bab59ca918220c1 GIT binary patch literal 19523 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 DY&!)0 literal 0 HcmV?d00001 diff --git a/content/sql-part-3/reading/inner-joins/_index.md b/content/sql-part-3/reading/inner-joins/_index.md index ccff2c0f..5b6c3d12 100644 --- a/content/sql-part-3/reading/inner-joins/_index.md +++ b/content/sql-part-3/reading/inner-joins/_index.md @@ -6,9 +6,9 @@ weight = 2 +++ Joining two tables with an **inner join** produces a result set that only -includes the values that are present in *both* tables. +includes the values that are present in *both* tables. For the rest of this chapter, we will be returning to Mary, the event planner, to see what different types of joins can do. -If we use an inner join to combine `johnson_wedding` and `johnson_vow_renewal` in a query, we can see what guests are going to both the vow renewal and the wedding. +Mary is working with the Johnsons again. She previously planned their wedding and is now planning their vow renewal. If we use an inner join to combine `johnson_wedding` and `johnson_vow_renewal` in a query, we can see what guests are invited to both the vow renewal and the wedding. ```sql {linenos=table} SELECT last_name, first_name @@ -18,7 +18,49 @@ INNER JOIN johnson_wedding ON johnson_vow_renewal.guest_id = johnson_wedding.gue This query will give us a result set of the first and last names of the guests from the `johnson_vow_renewal` table that are also in the `johnson_wedding` table. -.. figure:: figures/innerjoin.png - :alt: Venn diagram highlighting just the center where the two circles meet. +![Venn diagram highlighting just the center where the two circles meet](./pictures/innerjoin.png) -The Venn diagram above shows the result set highlighted in blue. \ No newline at end of file +The Venn diagram above shows the result set highlighted in blue. + +You can filter a join with the `WHERE` clause as well. In the case of the Johnsons, Mary may want to see which guests who attended the wedding are confirmed for the vow renewal. + +```sql {linenos=table} +SELECT last_name, first_name +FROM johnson_vow_renewal +INNER JOIN johnson_wedding ON johnson_vow_renewal.guest_id = johnson_wedding.guest_id +WHERE johnson_wedding.attending = 1 AND johnson_vow_renewal.attending = 1; +``` + +Now, let's say we want to use an aggregate function with our join. We can use `GROUP BY` to group the result sets by dietary restrictions. We can write the following inner join. + +```sql {linenos=table} +SELECT last_name, first_name +FROM johnson_vow_renewal +INNER JOIN johnson_wedding ON johnson_vow_renewal.guest_id = johnson_wedding.guest_id +GROUP BY johnson_vow_renewal.diet; +``` + +The above query groups the result set by dietary restriction, but since Mary is currently working with the caterers to plan out the dinner options, she wants to make sure that she is only looking at guests who RSVP'd yes for the vow renewal. We cannot use `WHERE` with an aggregate function like `GROUP BY` so we need to use `HAVING` instead. + +```sql {linenos=table} +SELECT last_name, first_name +FROM johnson_vow_renewal +INNER JOIN johnson_wedding ON johnson_vow_renewal.guest_id = johnson_wedding.guest_id +GROUP BY johnson_vow_renewal.diet +HAVING johnson_vow_renewal.attending = 1; +``` + +## Check Your Understanding + +{{% notice green Question %}} + +What does an inner join do? + +1. Returns results with matching rows in both tables. +1. Returns results with all the rows from the left table with null values for unmatched rows from the right table. +1. Returns results with all the rows from the right table with null values for unmatched rows from the left table. +1. Returns results from all the rows from both tables with null values filled in for all unmatched rows. + +{{% /notice %}} + + \ No newline at end of file diff --git a/content/sql-part-3/reading/inner-joins/pictures/innerjoin.png b/content/sql-part-3/reading/inner-joins/pictures/innerjoin.png new file mode 100755 index 0000000000000000000000000000000000000000..d2f2e31f688210e5eaf515a73dc95b3ef5628ee7 GIT binary patch literal 28885 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 YP{VM`&tW6^f6UhGlJ!NLiSv{H0r@Ca@c;k- literal 0 HcmV?d00001 diff --git a/content/sql-part-3/reading/left-right-joins/pictures/rightouterjoin.png b/content/sql-part-3/reading/left-right-joins/pictures/rightouterjoin.png new file mode 100755 index 0000000000000000000000000000000000000000..f1667dc9104e546ac913ff3cabb0e78980d5cee3 GIT binary patch literal 27371 zcmdSB_g_<6(>J^!NAMsK=}keg&_$$)(o_%x5d{)L??tL~>2MUJ2#5;Oq!%H9(0f%P zy%Ty-N>Hj0TBz@e=epkeexCo}@#7CBS$nOSSyR6=+ps5(mEklTG!O*AAF3#7LeO7D z5JZVOO$EMjA#ig*kZs9B#k<-s##g4`FANslx%ZNuNH!|`lW|3p^6EcKrxM*1gDOmQ z8OFY-=G}_4c&S(OP$e${o`lRwrb4pmOgpO0qg^_)9wfc;mUJvV$9Q%1w&wS5r03)1 z>4-|_Rr|lLxpY=&!`eME#_egw-mTmk+gX!sQs9b$7@E4E^$Umoy~Kdz(`>#5&{voKvYh5YakB`~DE+&+qZ+px&VaNbMEK9@roSod)OG@r? z?>6U0AAGt_EP0-_WPMx@_r}cTmLCNuZK^(&`e}aLogd9!-EJ9jm1xpEGnZuW=jrvK zNdu$7wCDp~1UJ$7qnGa9RDLRHUHoTpc?recAh_Q57S|HS^L zjPfJzn3=-)Jz6JY!+AfYWA&IbO2?SC#qdLy7+9%q*EkhYCx$xQx1_C8sR3n?)#e~3 zv!j#Wkm895UyWuW?J6}qoloG&6)@H*5LWWfX&d7?5l$NCBDE^XY0bY5$JDmCzp#r* z71=b1kr&=v=omR*ER`w5E-fG8cxE)KAE)wd#`2tGw>dHWa%k%Pyq`$hyD7Jh^-gWW zyZZ*5WGu}cZYNgOR}zRTpS=#0^QU)IF3b>jb^Ma)SgT7n@9b^!XfTuP5bHilF|Q-u zuq1pwTu~OBnHaxzxI!S35}k$39SI`L(#G?6o&ckHH6^)E>Jn(%XC@R--;Eh9_xJl@ zy5ZR*7M=8ppz;FE!^7N;);;?eZjsGzRMV3IY703s4HX-z#hj;FiDN^)pY%nXFR*Cx zjcBd(v>NB_%QPY^)Vp_OG`Dxg9Z&(qIVxj@%0HNqi0R{mj`B#v)5a$j%jXlHobg)m z#QPpyfY%*w)b3^~9Xl*6lQd#yh^tEeX-noOS-D|3)kCzHJwMV%37nIIe<5MrG>2-~ z+RDrRFsiPWP%MI|Kl&&Tz$hlWvl~&DzU1tb$3*mat;&rAfw|M12WOOw_Y?Y7E&ow{dM9)&ITIpLcq zp)~gEQZTzqID`XCF!AAudtB>@yo6NknfmJJ2R+InuI3kJly`+9V}qGG&Io%f+8KAZ z*48dLR1Vdx;u2fs^tLN>@)M=c@Yl_XT3dUa*zEhQGQcsxayyzh4cU>Cah^u0&VxqO z;MU$q$~BhyAm(n|OjXy+yqiDaCLHriaqg(s?s#HM?ND7~vDYr8H;1T$=GuLP4~Sm> zHO7-Fu!&D>ozx+c);e+$b3Yz%nJ=Igg?iuPNmwy)wiGnc+RdlC747hIT8p@|izgi+ zPP&yDEwvUJ1D0t6=J4vxC)ostnc+05;YSJnqVprR#|J0zKMwpVHrKT-`+E?Nd?V}P zHq7ukR(nYtsXu(Y{#aMURFj^Kb8NTf?<3u8-KPgL>kdubN6qZh@-%I(Vw00t`zPsj zeP*5w8KZk52<~NT^z=?2Z7SM37EeT+9O*3az4{{3^E9!($^nb#H97RuQ(0&#yE#^qT(ce}MnE z_i5i+sStB`;ZU)AB19lsH`TCCZ{c;moRPj{`M~d9!2pf>2q%4=!SCU_B>mW4&-;?) zw~P0QM>|(jcrz({trwQ-(g`G<0i(s=bnoluj@vX0ZcYwTs@+CJ{^-D}jEBXRX5v$iys}&jZQ(Aj+ zgCs_lxknZnb?Sw!cvkcFz2ypm%ID#jUTaqD`ML^%bAYtZ5l#CT2Py#AT7YL%qt-^H zaeb@@qIVppMNIF=vsO2>eOsB$A(drH7`JM4|CTF9U%@6Vcx}QYqJ6H| ztz10V#rxK+V-9yC$8dsf+;)AtyH0k;tEcI##Ttvw1@snwDe-pid(AP~wEvrSoj545 z?y8KRFwr(9G8@yV8NbL)M{k;VC;~cxAZE)jJx+%O) zSg%PsgIOPg&==|7@$4z3GoE3K@4Oot>8x0tu12$7ImQc(NHvUj4j)!lN>v3(3^tw2 zYS>dMPPb+(mn8k|G0>oeU0uksg*T^&ri7xzbc<`RFk z;7)X4cI_OfBwK&E6Suh56cCDw)x?WzD|?U1r6r5}O+$J~!NB3R<~O3cS$VyVe_c&P zaSE=V*m#h>t@%l;4@z|s=Oc-GT&zpOE8F^F=#!J6#9i#-!I=}e+P$Lar3YifiHo0? zbYGu*{u_?j7OU%BAFk_dtW)$SGMs$t-nOpn>mB)Q$1W1D-79qXV1d};(K62bWqkw$ z91~Ga)HVw@9*${Ue0q9VKVB(jyHuh(V%+!h-C!44;1_&7@vR4giPzN5I~@~CnfUv! zRMqr+S7jRn4pYUr>iaP zZbJ#d58U#XnWP2Rqq&X=YrB>c+%@qcD{qS2ouP@s#L7l~pQF5n?ZXw8eG-Se@X1rj zgQcGr##Xu?!G$0wak?qLa?eH^W+xY{%k)GPJzo%e5&&Fr;iugVET=Y~NZF|2XZNu# z!8>L~TK2DHWYp+4^Qf4NT5Y+A^7y(V;GwFYHV&q>_LK)nq%NPll;9@5w&U9E={mQY zZEs>ZwyYEQjpnPA_B2al(#f?XQs6(?HYT`ro9&Jd?*Sw!>! zS|WgTvBW8brbZi%p|D z;b!J|^V!vtf~D0|M-V4R;g}nPc`paWzDeQ_ALUaMhxK37XA(qDs%T)kx`SzhuRJ+`dT-xXIBR4!5b zqIOM6pm9)CpD*!{aSTVTgelyAQ6Bkn?^a`yVcmit_OM~iPJuDYs9!Pl*Z0sdq^$7P zLDCM1olCy{)B1N><5p#kEx(@ZAZGn&k)gU7EW$t9P6y%!X{=*1_=U84pPLVYmM&vA4RfRWdV(Ii-ytNBsz9x50@r_4N2v&@}j(cCx4i zj`=NBl91F|PFj-|SKDMy@zfZSvC88>{aCb>+o|@Fd`Z|mQa|{mCL>iga(JxR;7ZSl zxO1hVr)~w$+ z2T(#K*m5E}P2|!bcR&fj;iMuccw~*8!+0=ESUa^*k({972eMC)JCsMn0zJ49;bwFmg{ zISD7MoXO=By6L{O^~SgsHBstGSC)b}yY}B>dHMqbh=Ta4d^r{4^xX zR~-v8o;|nAepps=Du7UMc!aC_9G|ea8oQV$RWZ7l#By?d1>-v{obnA^*rSuQoKSna zpxMigMU|FXuDWI>oA9wis)M-fCq^CjKG(bWIiZ>s(Tl~A=ZKYNZ0`0kVX>xmRxeUn z(Z|>Paf6EYmEOx(wSUU~=)?br0LrZLw^*H$?*ps|J6I^jgG zU26`(Zt;m{3A@$e>ddY*@->0Jjq9v{5Y-ds5X#NE&H=X*n;<1bt=hp0ojDa_12Sj>N&rI; zcnF5|&6a@=odu>VtNtIsCYpq9N1PYle5u66znP>Yhj?Gi!y5iboS#)7HFJk}Y_(vw z-`p`W`m6O6;IQv@O=;dYjrrUN-9rXzQ!rXS?d^3z+QIL z1Y?zm*g3(b^0`~t`QmmBo_R!qierVNEhkZb)!zX~qlC$~(O}*n28%@%&-R)t;SD{f zVxyy?mLB7O<>jVyG|t^=xZJoiZbz)BsNmxGRc>b5_WlI-# ze1qS?CSAbZ*X-#v9hP4Clf!w{f}?|7jlzNauE}tc-U&~V9*L?;h@+v{)~2crwH+?d zowv^z*-#bN-=|moqvlu0@D@@LaG}J%C--!I0cBWj*%{Yf5NK|0Uh^>Qme0=0{P5R! zG(tCfd%@loG3jZIykF#tvrTIk4je?Ib1ILX-I9>6l-+8XFZXwd9nNjm4T^1q;7Zy7PBuX>;%WKbzDH$2odvDLjHMMdF81Q~pIvfx= z8kmp!y0f!$2zPpMpLRH!+5Pp=l9tP$pdzmh3a6TCgG$gv6ej5P_k~-TTLvS=%j~89 zf}raHhh|ETFuKB!GL zow&qcTQ2TgR*tgK>wjxC?6*55B@OxG^ARFekHxY!di6!Cd}I=l{qcQSF(mQQ{0jCc zWTGyx(Tv%jdm=0(?_{n$SNUC6f?odzFI{d@oANacF?&0^q-nFyF}Qn=Qn_xiyd0G% z$a>n1VOuh0hq#F)$yTQ!=Agi%Bsyl4hb@xIwIEA3Y&Ewy18W;`3EWbfS*?24<-}x%1*W^2w{XA5?XZ!}>oa`* zBHZ1Wj@fOqiw8ECH^t+sEO+#GXHv0~&!-e6%LO{gjEn2qGs>_=qVKHNiE(ps4$5BQ zx9&~pZakW3lx|@}-WbU(&j($8RVglQj@mTxeT|t1=KW`#&?^M`9%GhU?zy#^7!D3sF;Y z920+;TSj~f{UBPbSL8rc7v;6PQF_Du;)F?hFU|_Bk|Zj*it!ltU*oGxPR&A@qacd<5F4i&pD;(lpAM zSsyE2m=(*Z%UMxxdG9jtZ8=B-^~vX7;nm-mJN@iTCEdT|FzY^Bj!qxxueup;7-xFf z4h7Z)E?f)W5~--HC~XUV&Fzo+ zNO^sZw3ynvyEc`C)vvtHp-bmOqwCgx>-<0!L$%vwyKVfZ%!Gno2r3KZYe@AOshy6E zj*eb_)FdObJ)}j_pV>$9vRrqZv%P`*Xk!p&AXl7S0V0{bA6G#g3Ix$?M%)fb)@P^g zrle#JBZd3kcWU`tvOkY96C8roeR}lVEn8n;1p4F8B^YP?@WCe?|3g9n+f$va@^@M2 zh&A?~k5P8xN(&+uPajP05_F8b7No)(izzfD;DcVcrJa7ZzC!v-n#La7x20vdJHwws z(7PR#7$OV?Bek@=ih_+I<7=9C3M%7WuMT{-m;W8;5DYD_kMPQN?mFBms9jT^^NC6xus>H^07^g0*{zOP!A6tXi$V>z3Z9=FACdj0Yx;l+ zVIU)vD=K|Z)K~BQT?^;Of^}xw`=Y&o3Zd94dOweYoz;-CuMB98O-G60m3=9DpNPRz zN^v`7UoL4Vfkiod?~HGGti<3ljm_K}8Tq7A!0pLN4xULnnKwr%#dl3=yCK|l;^@{QBK zBHq)OOAPOCFVAItS-2(RbO_%S&RoQ-Rdh?K-!grYb)J{maivBUTc-lD>@&mq^M?hM)B6Z?VOlbm&q}dx zYt)6O7mo)q+dAg(2cj#l?#8%WMXIp`G+rLtG!UhM6h4{x_mGsiycDS+)wTbnc5A-F zi4*R(vA{6L-FN@)hGO1bv%=%LYC0mUA?Ug8dwr_^UY0+E|ix0U`&IM^~iLgF0J*`A$A*I%C|qVeQMSKK|IVb5Hq@pooOJ(G2UsA;*K z;^+n7bs{J?HeRKchGd2!x*~*nSEOA88p-;lE(DyzRis|L=czi!>*UMry^6e8q1<0{ z(DzWOF0>luWq+xs3r7i|SRRw3`weo(W?Logx^9wF$Wv z?@tX-KxH|oryK2LH+ch?swTCS`+Qr>AqX5t-W$pNm9KhrkH{YEOPwHn0{;bB>dY{S z`JJ;++IFH&>QuSih)#DcC1JL>l}o?l$J$F#jA6`mo{y>^*_)NNy&}eX21>iyBAI3_ zfej26FRpN$;y5*XIbtta;=EGctbrooHf!f|PbhHM#^}=>-@PK$^QgCMYYlcIg}7Vk zH^O`Ay9MdYLKSbFb#b!4W1;--1Uv4Pq4W)5Q|3wAiyr&vO4sEru~bmM)i`PuHhy($3?)XnvP zlY_+)20I0!s$yJKn8fTbJ!JBCq7KrC;_BGr(V2eNC-lNRYKc>?AM1skf&g^@+g4Ch9=XB#R3h_Lp=du!@TR5_s_;&=XR=;GNAvpT~S3 zl>Ym5JpsSff!;G#7ozWPq5QK`iI>EM|9rIZgDD*Y_V~<+wzoMwr(@P-_dnm$RTM7< zY2A~67~)eV$}FM86;NxWmfxsbP3I*7e{5qGrZO<*|2?Q~a~5PQu0uNWGtZ1DENzS& z#z@156|YmOEKF}rwS=D__##yD!(y{yS?MXDsyAyqi)XpzFgK~*Ny^E|cIdD^`f**>+uJDERJ_>iS{#qAqNcj|!i40E_|s|;7?k$F zC#H98ynGq`l#Q}XkGNEB+P<3{@BY0uRK-jk<5BsUEGC7&w|93nQbrLYVaB`3ZFi>q zv4FRC>f*n!sCxfLKycraQjAKix&=iwsM7FBI)hR0ax*>j!-B;Z$I23@$z`KDD(WonS<3e1)z$9Z^U~#fxF0*P z)@zwhSYkdTp&noR3yM2)eCtf+wqBVVaV0{f zB#f0pfC%tMRr9nqZaO$T4{U@ZYO_B+s0I4YTgmY4MBszc6};P&9}jktni9Gq5~b9ks31+I+#cU&GYx(M<`R z?h&+57U35;EX)qwz35)-egjGUq597n`>TIJ@r}0}2*E#on8u2}Eo*LWZbwiQJUKtE z%Ewc|KnZmj*5&VH6ueYe%F(!BAN!>bd5^w0_8iF1<&5V4A%E}fz9nw??{P@X8|K;>D5ZwnZ*AS{NsHEL%51=1;g1IcPc2ZW6@)Mx`6Bj zL`7qq)+VK^Y0|Eq`Fikp;eu164q14-Mv84@65|wT9pzbD`(as_#zy%Wzn>O%z42ZL z_2lg~_5UWDahI?-XjtBkFbK^!chOR`O15IO+~0I>zGP2MDQhx}mGLGZD^O``1H?K1 z_U|4S-9LT$1oTv_Gvmfe&0>qiA7zrX_vutzz&(KibHc|?&Aoj2k}OxSTa=UWTIgYVGmPQYu23}9$?|}(P%FFGEJphF z$rG%(vRduunc5~O5=9A#YbUe0_K>Of^YbI6T+WSiH?2Bq5`|4ET_Ke@G(5}L`tr}TztA#^Df{uLGQGTaBm~JDI?Xxe|yPq3(Azvd;uKcYn%<1KpqayNmcdkQOF`PC9ZhdZ*uPB=m)>1Nyb>gMLV zWa@z0m13OKbaLrkE1UmnB!u zvrrepC&s#yYpvamom&?rCmhQ>x?;NKeeJ3Oj_Q~xl0E9M-;R~j$%JE6E(6fgSra0#6< zNA*rW_$rUEKaVMP!WA;PmO4@ClnSDWp1t$*sCz9Xwg-U%H%aF6!_&Gi5-iFCuq>ep z>2+xr)gYZ--vpn>kG_?ki(vpfdnBEOw0-vXm$4_|18gc|EiH--)vmc;dIW^%b*aJ% zW^uAhMH6n2iJo=L3?~PNCRt6-pHG(gq-r`69}5?y>jXP}V5Ii2(4vM@Ko<9vj&C3( zp)C8>qz3i7BSoZ}8n@e@Dh|lMm~G3mF@e_@QbS*=M|G8{wZu0p7M5ZK@Ck9VvZ#psb8&RT$Xc-@mq)&PU*=D*4f%MFKI*;0*o4gYRLr8Z81C zxyn_jsE&R5>=h?pUm2$v?}&Sae>)p0T{#l&)tJ}8jNO>6xB$gr*{1!khw#9%x_<8v z&brR{+4KRjZ_>K1yB(Z`I<;t9e20GnqYH44&ck+6a z-=OOQg^F(1PqDiC>M*J}Q?jX#gGA%U4mconn#UX@R{6jgIIAvAXXY|Hb)SFh+xz#| zNnm*7n$&a+Dx!sh0(>p{!#9Nvvj`%g=Mzn(Qrmd<9Rq6mhqs*>9GvOw;_pC0VvA-7 z7+4Z(Q#V`qTtAtj-6vXZ3CL$$Kc&`DstcSKgYuTW4RZL~z?bKME>2RdHFMZt5G=C4%oKCe-mAy{@?U{*)(01#&`eEDk$`olqe>&6D9&fB z$hi$j-h)t7A(f6(`(D|iCI@Mw4?t+3r-btMF{{A;&u-nFpmw;-L=W0KP+ab)++G(* zf5>K#EN64@UDKhPy$tLHj)3BZe%H7!AFDj0&1&#_zM8|yY@-%mp5#d;)@@cPYIb@U z9A@)$asS`|D97dmHAr0)f+||{UCERVF_tojO`N7kTX16~Jz@%h0LLrR{tuihUj3?B zR3u~XWY=|M04h-OvQs$uwbZBrX^4MfvRccuVqV`h#f>99^h)ZB;>@bX3+_pDP=RGx zWu*=|@36NQTK_5i`G(rX{-*E;adww@9`>$GxS6j>azlE`z;94fQ^_$UV0BT%;p#%v~wza6^A>b|<4i(y_b(hz@`oiAwyxVg{jI0*Zpa+HJp%40p=EqyVe;1KO9uN>fh7$fPpK;{@ zkH(W3;WawsTk|}a+JPxl-e95cVI870^s$4aAkc-(uMmpqo~poJl$ z`N8}5?~~00pf?2Lt9SGXqw_*SKt^57lu%+ew(T=XM`3AtC(4he=+&Z$!?^25Kwp@= z&Zj7<;i8EEh%dL9r=!5#BNAUr%FNPhbf7}jL*>^2M7I1nVfJ4N`CnnHjMZSGI z(P=86aaQn0nNvLuNKaEn$5QLEI28DfWZxA_p)&UUyGg@h8$V9x%dZy)^`w-8!#9do zR$C%2;f|cJU;wt`>SI&VqvVxSZ%c0RZ-av6iSN~9wpqv6WRQ7+BJ2Uo?g>B?7Z`Gj zWMt*!3c;xrWcMk!u_g23+DsMkEZ}UwzwoyIH4ao}2L$o4!X|^}mEKSN?MYP~5h^Yq zC}kj(P74LPh&EkNNugLHf6F!xd{Pp{n!+aSbE!5%#g>bn5UODok*h&YJEMZK*uNVU z-d&rZJMSv|=f^Zt@{hRT^MN18k%`IRYWs9%bfV5R9!vIlxePFd>%tbwjACSDBukzk zknr*<&%jR%s@%~)8c=_u%>QWLRn`2WC1{m+DfiyR#l1hRq?jn$b^+p};5|p#&dJW+ zPPVjSM27vOm+~~o|H+KWxn(S--Ccv8FfS$-0G z1q$4fWemQg(2>#4_0@w}-}3g9-Sd*LKMp^PRrw|_J*C2Cvcl;P_w3z~HnAAKx^?a8 zjU69D;OB3Hc8sEU(Sz7i(A$azp48zcO3g*ZJG}Jaq2hwLqu=o*5H!HjnVkyU8-G%K zeBWtjhV;E3Hyf3J5L~7##LqbM6D55>h(i3mah#xYiDGJqzL(9~`=9xJXS! zrQI4x6(^p@CnHG~$vZiT@;#|*Nr~_?(3PbGK3WP*7D1)CcvmIl-w|I99*-UK^R!#9 z_Yd|raXjUK6cTG94x9V>-U8EX2+D2}uzR}qbN)Qp9yB$ajb-v>pg?h4T89Siml4EY zYfEIo#s0aPL}p-WAE=?XIsXw#E`{bAX6lcR&=jADCI7;v?d1rNDNr5QnVH>#sln6~ zEs8l%tEvFhC=J?vvkCkQhGD8~@j5P6_!SS2y1H_2vyI8N06hdI22Ae4g>pw@8-tj? zPLgjzdc!FajE!XRKh}GC0mgwE7;2%ZA(x%PidnQE)LaDx&uCK(iI7D0fuIDIDAG&g z8)^a>)S&xrSY63|3P`0O2>-8bI+?7>xoJ8hHmQdH6VY#z!Pq9sKt(?z*crb2U<8K- zhp6U6A^XEr9&(^Ald0Ay3_6un2+|}NdPV7n9~cKw%o2iQo`SQ%AX=BcjK(vQXC`5x zLJz>8$VK)4xt{tUe8V;ikSh2-@RZjzt4=6ux=B;}&tgrOpbifdNW}s!k}57V6mWUN zx?bseU(-Mn1O3D5AUs+dv=oKFU$8Yj_y^deuZiJ5 zAO5T)fB5%MNL&tZN~T=_rshs-V*=8TKV$-?Z2-g7XL&Nf{2}{ z;g*ioS&Jr{>HkR4WbHwC-A&N0yhkNol=Uo(Vy%`AUc>T7B0_B@F&q8;PnmDN#iXaF zlT**xd@y!I92GZD%oV{IZ!Xj%Gaw9v-se_1MN1l zy>FxTK`Am&evW*1CU?EfPa(TLQmEiZM^O!+pC68XCshQpI{vS={j;QejW7Viqo6Yx z6q?iIz+haQ-wn4G$urvhRB}pNQ8fm@1#>e=j)3_r z{`J*W1jxOY*VcM=xnv8P1WY}+Imp&E0AvjuNlk+{v0Dlaf`d|~UoSndTz5W~7I4T1 z*NOWYK;R0q59YY-0zcr8iy&|bl&Hp&(GQ?4znnbfTm-O_tS~5ygMYIFv{Y!=RgmW; z)Bo0-PHz*XCTI9%m3LByfOWROS=hM&Sb7Q8&cVUaamV{C*y%Qt*LuG)*-7}buvK0vFhAaeGhFQW?8{~ivV z2>_Jvf_Dz>)c^tdFaQ34e*@!~#f)2jsUXD1;D3o|cyr0T$D;7$Q*|F-T+t#ERukbX zTCoVAo(kz!{-@yuE*87#cj3zP{7N95>Ji-i3PA8%Vdqqge0+TT!4>jVsg_*jo&94J z0a`afR947)^G$vl;&){*t*)4F5g6_TJ%6@NJi|L-y>@-jFr?fe9tOxoVf zCXmlSAfL%G3tS+vy`z0A@N#mn2Y8;xJs+GwIs<-7)4dJsDIlPctcMr|{Kbb-AlDf* zVTy6VuozZLVkb{1p{rZ?B&P=5;QzWO#|XXfFalykmX}-~`j-FvWn&asyG!kSk_o2Gyb z+{CaHOzwh{@rLsee^h{s>6IrrYQM^^$oP@MNXBExHDfqFBlf@uN^1c*?Yoib>6DqB zK1Q127NmH~IZtwuU?l8)_(&XkZE_Q)KuUOd>Pqi>_nw0E6n$cJW6DJ+*no>Q4_YHFJA|7mG= z*frD?J}Sq@V|H*6x*-n=;tG1n^bIk6q5wlK+S+7R_6ixI5+A9MOB1Kf4@@v$G{KesT|pOB6-yns@b%vfu5f6%J~PR#i@d?1)89m1 z@vwq!r;Go+Kk$KhPMLczxyLLx!W}+-_ng8$n~^5%7z^Z)&$GlmM6W z{u4JdJdY$^q-oEDqs0y_x`u^5O4%EC_mTPNQ5y{C_(cT$*QX%ZB*w?L>0k_!R=yL# z`jWpY=^a5GQlihPq}bp!yUe(8{`T518R%)QVrK*K=_;&!X??x7cI~m<11(y)R41Z< znmuRw570u4YYE~S8@i+jHQmJP&fjBt4dsPj^8v#i41zgP!a#2ZB)Oc4Y(4k&m1t!QKn5sEO=>gbl@J+jFgg3~YWk4cq}hJN5;3^C0NG86P16 zj3H=|qcS(QhS}-;aD;=qR8gD@r)k&vxX;#8pwR$Ww8iDS&p8fK1nS*aYPbd9BUP$* zAR)ga-RGG{lW%i4G*QyHeP#y=U1*JTu z8Z1sBXyu&1Aae;5FZ6A=dGy|AGEt>2U)>qUhOSdUfg@p;!$n#oF9d1>H$;$a{b&`U zZEtF?4MQ)dFh(@&3j|Ya0&dm1?g*vuQcoqqpi=MzFXjuSCJXgrA>6r58%QGGi#beJ zJEDHywm8WOKnZmylWk_``9qCLFn@Gjc^H<(my!x9epWwbB(0H?1x!%C#o^V47p8$B zhM}N=!$a*XWbhdCg@gP2d2OH;;ftSd8TpAu6J#B<@|2_Ytg#K80JTjjz*RdWs!X=g7o}qvmeH~mINUaE^?%N33`$)Ek&@mlI0qw$b=}9;O z1sd&1MyLW5ez=SZDW;)awy&zF>am%I*MXY;kujV{po;=O=$J|zD1HI;maQJpsP1Ab zzbW#8%O1VhrKYQ175OgT-( zu{&IT+Rj2emb!lUwKz`5=2iT|8=|*w=aaQ)Y;5c|0tLdf{s$^#)>C*c+xT>sa4ZiG z+{jPjI})t^fC}EuCO6>T23f%A=%jon41DWwwk9}C!M=`|jCA#a=&=sio}bs~IbX`b zw<#+a6v_T#_S!TvfeGja{z39h8=ka(#1&+^c6-(Ug%d zKvjE`sO0Cig}UnMzb}(*ldO8N8QaM%tbz$F zwO$gRK!c~tRpRT=_Z^blV?~QFs!9zDtxSHgrD zc2t5lURJ52x)1C=t(z+<#yx-TldAs=GAVv^)~#`^W|`KF`W-WDYQ(X|`K}VuQm*rz z#VX+fQIB6Tb(fW1ceZ);vSTJiAdUr_;@7O;3Ho4teg{F+gi72(vzXd&T?e6<90DH@ z^HbiRQBq{Fdwvie>rm|8_Z_&lhb;=b*j54RKqj2RE?UwlVMJkfG^%n4j;Xf)`%S^i z?PNVZo)T1E^3v_^!|V`Bpg8t7j(p+of-G>V{iNhRorM09tm?^%CX_q#IwQJ>sg*|) zv zwN`^mFv#+T_B;;Mu!x&)vo1pPYR znI_vA@6LG|p+A`mNJ+Z{MXbP>%srnNSCGAkOsJmDvbC_VD3Si)0<${^GJnr|`A=wW zdDGAl5f5hg7;<|IMnNA5=p4wrPyV6Kl&TG4&V_%QMBnmz^2aQZr7XQp=CQ1z6p(6e zW7`=rkZW=AVX>+>!E_aLoI(B~UXbC%tp10J8 z{^OI?t|h0{vV+Qj_}@=ZGq;kPrrIMN5pjSJNohKCX6784U`mk(4Cd*p?7pU@n#EVu zIv}wIjT8kLY-H6G$SQ-qPzsx7Tu3H!wXvpf;g_PQ=}F+9zfPhBkyxo+8puYvxa<%I zsvoknNIhR|-C&*M6@!y#Fz%M%1KNO?W}Z3F6c@0(_)wIN?C=TVbm)FK2IW=0*q{Y& zQxxoTk%HS8OnHC&*4m2bPK z^Kp&A;zjwDe{+mq=LxBRL0K~`98yCUR1g>jzll3L>MRc6e^5}Ta~P>(puays0iaJJ zqtSWLJ?4kCOBP#kE*Uw&I?1Pu^?7uI7^Umu+np#O($a1W@q;tKJjq_oHKZ&Y6Ys@b zie>u7V+JTu@bWdAs&QY0yHjg23o6-B7l@PvF;7r^x&ZO)j%(p|_mRL22{qnCWSw3qlul@w|+ZvrPBs>A~Cy7}27omi65GZ3?9C z#%KpRA{;25fp@CsgI=SIvQ*&iSR8{UW8-iEWq7DZHxfeu(AcFhrcNUFlnGE!~0kE z$4xM-1CHfassJE6Sv+BITQiD?sk$0s&mAJOAo7q7{QOWB405lR0jVf%u}aI!$Y4sS z5~u5ye*J16!5Rk?zL@sX10<>T)p59?PeW;8r-XV5prPFllxq4=$6wo2m`A-Ayqd5O zdvFB~COjf_ZcR#PYtQFR- zX?nrjy_P_jPI9c_4{vU@eo?4v0~6#}T}2nJu#L1Z#5|D1{ySPBO+|i8Xmf=;cZv@S z`x|lVhEufc4ywVtHA)SxP?#IUJWihHu2 zgfTlOr&c7)b*Gum|3>4F5YFqBaO)RAa7=_8ff+ra47_amY1WuiSCKB?!ojni;MvhX zbACW?;v>Mz0Q35lj(!rghpHjXrzDH4^!g>vw@wLuQ?if)FF06m2}+kbae*9HVJr!S zMizKGgV`kavt2*QZwIZ{5qkhg!7Ls6MMLpiciF7naxnu z3sr5zUisAZsah%HM*pK~`!zv!@Jym_N;qSS8Cxl(p`w)rtf^0Nhj4 zW090I`z(7h16@?ZTg0JIMjE9niDR**t5c3YAkfPl6x1m^`~q5wwp?*xzf4!b#B_J? z?TBV8sUo8TnULBDp##&^%L(tPzyM@@{N;_w+L@!Z$+&wq4%`Q$t(#!%eqnWWHPt~u zvD%(L)VJQGYOT6A6nZKluMu_uXGjY+<{h zC?ZWkr757)1EQjo0|+QsD4|FVh9=SkLckc24vHWuMUc=5D$)Z{NJ0yVa->L8B%voF zO^6hM1Of!^px^rbg1hcocYc_)GPC#Wy=T9D-sg>_&ee>cZ=6>N-;2MHbEzaCFw;D{ zAt}TKctMR%XAs&rZ$NBGo${Hz2qWtk-wC(b!VS7@F$4Wm#yw5TNc396fk zH62OvL3nq0)Ij&(-xCw3`l9ITQD_PzZK$G>$rv=s(2BN+07_$=bSw~(T0WD$UBr5E zH5zbxJS1~nl5w|M6OvxMI6Te+`RL%Z2WMGf0GZs@YCY4RP@X&iH6?-s96Ao zk^qAzIXLkI0Rc$}IK=h~VkvsP3DfrQDv%!?b()TcL1{GF&T!ydN}hE?T&6>HR~iL! z$^xB@MD9TYx+~NGIy61<1g$A8a12hNe0_7h)X7zy8M0cggDpX}`&a!t2bKr&_G0f@-EZG{6C zW@AOszmnmRlg|L;AvTCdGnhgF66kZ<#~K2ETS)|d+VA)?`C%htQA|qkRFBcEFME?p zr@BrJW1xfMjE*dwF`vz2OqlQ0%R$+(Kmv9 zs7FB{MbXmNk}JXjV`ny~gcdD&bJ%K@=o#LwG4f|sp${)4&cL9rOrw$Zwus$kXfT7mPFbnQU98vvGWpSO;5Aznn;X%z z2z0lWZ;V~WMxQKz*L*3TaFlx=t5I)zxz!Hvw_yIQ`_weZ=F;s7OGh#z>x;V82YF)# zftHs}ov&K{otvAB6jbB=*lW1;tK^~!Hl3$R9i4dV@sZ3Jv!$!8!Iy!S_GLYAwd0z8 zhgNTM^#W_QjoMr@19Z*e@cD>CRdt}Q`tQMU-IJ|Y9p^_0$^qM0#$MK%4Xf5$Y;i9T zKv%N+05ma3b6t*6AbG)Oxy{(VN{9A99=Z1Qdg&%>0V*t3H+ytZK@f{V-G(TelpJ_p z=A(Cci~Au!7a$L{oUPfx1R3YDb6r_yt&@-I+RoJ9gp=qO)PCxW=5tr6Uv?aI-9ON2 zqslE@VQZ1l^Lcp~1@q4?Isx?V@a+2XaWX|eMNYu`gv*KhL$@*qCZB==81yp9wT{=S z8ucsTE<)2r*MYXN+a0^i0_Drpjo*`YfY_5ieA$^#e~*W80Ppn4{|ADwpa1w8E#(OUa2W3VDqw{zn z(A{gW9QkL2W46;rT#(YyR~p-oegLQ!Wb=b>W){#;H?OBXF8PseamI{7rIu7wRxSnj zh{W+in3n!uE5gg;xkZH!rQ2A(^AaYwCRl<=4r$-_YQ*_{=bJThaB#rr&X>K(Ru)KR zUHdRHGSUZLTZyCftc9A!9;G&2Ww1g!B8_>S?d=X$-(PIpGT-7{EZlt#^atV9B^wci zn89KvDuB1KLn4vIYJP`gqtG5qMNhnz^Fg9$~kWq?>~xP zK!aDaUlxD@M$^tsxJZ8fRJ>$w(rk%EW<`e%Ee$E`T;T#npJo=Rtcr1n02(IVxkIfk z{p3Sn6P&$YPn1)(pC7>Jm-eNz z-!G=03+PBYi7t%UVK;YTbBLFh9}1i?O_tUrAA$n7 zES+qm(RsqPKXWMCG`TWkwHX`$xCLRSZ{1Lejj^Tq{JY2D0355e+1XnUP1$Cz+VROo z25&CJiAX4UUJuJ4BfIhhfidnXd+u!?N9REQw>?_AWF-bu$K$F1LxUl#_p@l=<6{A{ z#N4v0&yK-_tNa53i~=YXnQMaSg-8>&)Ei?nc)sq6wh8}534ch7q5-2gu^=KsPV5~I z@GOye?R`B}8L{$l-PfI;{g#0WN0H;}GqA#oq_ zVw^k^H+I6 zzW?TR1fC3%%838RE?N5i&?}R~%s1Cl-87=NHuM&|WW-((-?~R%VX7^Udc?fHZ%F(n=m*|M{}Ai6eTpFi9F|D0y$Nn zOP@^Fsd_yRJ~%o!P;vnzI`Uh`3wfQsCC#vvseyc5gzcbP1kAY`r--oIyPH?z%&p26 zwA}-ZBj*S1Jc_)w?kwKaXH}zGbZ1yJaADxp=;wJi6Ky`N9$Y&r(r505B1{hU^|b?z z*WtWiaQdwS7l2`7ea?*Ew&0eTd$E?LE_sbWrB(nAMU1VhYeD)v02)Q5nT8|Gf(Ozv zWqv5nO8*<|@tKs;TcBTq9IWqlUCm5LJ6IM^x<2__JaG7?s#x0KFFagzJix+OX0E~E z3<72*QoF`1;ZfDGcBpVDrHR_UeN-_y?px}#Cptk2#StL}Q}ZFv0Pw(Q`H|^FTag?L zv9v@gTn^OZsyCKibUopV+0R;gt#EdP5oA1)m9di^XK zQN3!|ZoKodh(ACzCUx%_axbd!j@iFHWV)k=MoPg(j2C#vhQ8k}7s5Tdk9oit+K0_} zs@m$QF0%?`;|4kMo-ne(-^bzx21Lr;-Xk+G(lDYpgf!y#?EH3fYB>59lvl3*_AJsV zOXtU|VQ-UgISp9GsXMV0iNRb(J}*Q?oEHFO0iWfm_v}calqCPWg}@WH=My2RZ|ROW{kkLCe(y+^E&Z#y2p| zSE@M_Jv!pY5P~9L$tu{WtOscJX*gQ}&bC}^{x*i|&}s=_xIrg9SugbDf?KQ>CFWq! zQz&cut@~<4mgzKEjS*^rlGH=x_UQkpW+ls@%Cvx^5yP9An8CoP8JV%&pVgtW7nfXH zW(T+&WuXFr#Q9!z($O3vwV-}>F)YA*ZQQiqr~N^DgFB8CnYFY`MOU&;R8}KxP<<40 z*HxAEJonqL-HHZB=BHss15{6F41(k;DHVkPM?8TNZ(E-Osy&3oed@w%4~J8!Zx{89 zR}9=u>YSj^(x#=XZDJZ*z$he!5QL?mL3<>A>1~a(=cRJ&PgK_4 zj48QEH`#Z?I(tKxFf|d3)uR=j0e5IS4XV>ve6vINM-ge;$dm=`hD2)QCxdf^i|X#P zG7n8=GZOo6j~j9VIp3h6(C?AE)hwfab&;O9OzS)aqLDGphkdo%5PnR;V>$x!BX800 z?fd+QNSXCBbi^hXDxOdFzrfvD@{-z}QU6boI_Y)861W{3`1m1QP;z5R7_BkJi$C#- zKC;STo=#fcp@I<~pkqrvJ=dkzqo!cB9ako9`Ni;WLMx&KbluBGEgtr?-;FeyhW7M`tPv+FyCUf z8u#G)+x$GIqk7L$-VZi&WbAL{E_Sk>6Wqez;8ZThW=`!03dTG2XUq|^5t*uFJ(XZs z$k|gr$3a|Bjgo%if(!xEWenZtN>HGJk~^OtR${(t6*#BUGqY4Hb&RbuIc#T zJ@jZ${lVpa;`ACTqm~yEt#Yifl)lPRTZ?=fRO9R)!Or_#(R6)hWsCn03)pjy%TIQb zwM&QfluNA6T#kKf@{rG^{*(!-*N##0Km@nbI+;pb?ZD;^j+>NS+~^DG^6p4k^9r-t zXY$C^?9#bGsFUych^}HDIex`xcz{G% z^QXC-TVT@4ouO~CwVT?YJB@_x!b@@)EvTCE>2{?9Sed)G`gce4#$fB&n}T$muW6R- zf=#Y9HKkg zw0@2kqRU+sIik?XIb2C;ZH&G>4Y!ggJY} z7`W5~yZ|_tdR++-Ezf^e`%@%eIv$pOLdsF-J2uO6JG9 zX*A5ze$OVFXXvC7b8bh3J;<~5kO*;;8T_qmw~Gn=v>)>5Zv6h}SjE*tYy%U8x-Ufi zlruN>_-xIt%a?CtI(z>C?6Hd53E>l#Hltv*kXU4d2WLK;X-3)_KC(Hkg6~0)uTurf|LB3wKOTnu6%XFl z;h#4QxQhqD)jGd0T^Gpn<*Y4da4fU#=1$XTr2F?xYe38WM-l=XSLJelJfQLM3gRfS zVEV&yx+ounGZ3xp!;gI)AP^&*&#;`aDMKk9#HNp-@&4$rxcg@PVyc6<-V49a9yHxb z8S$|ND2bHxIF4EA$zA2y0?dD9Z~iR{>RI&f7gSZYGCLy$-Wbh2DCOm%PRGH79Y(9V zzoP7Jb5}{PHiv%7ud!c1q8s;1mZ%{%%+57;cnRN8{7X28gKR{MQ?va%XVVOoavv!j z@tD&EN=-(Iw_j9Ybhd=rZJB-P*9}%zAH$2erYRbT3Tu8nZn#u=J6c}p`Gb?eE;;0| zml)z0sVl7_1FRX+6w`g(;{Tw;h>qjeYSJ>rx3l}OVqjR6>6MYPz~W$~^=pVjBD-6q)6yw1B{d(lS+!tsFTyRwjh{evkr#%XR7JOQ*8m_ z)w2fT5OKTRuSx633>d zsWYGO>}34jN>x91mSA;VjZgM2`WIY`q138;K3?GQOsztm-ndN<9XqXVaBwA*kXARV{{%-c(``l zPmK8*QrNEHorkxSBd3S8wb+kZnjP}+4gg3_`N;DPrsqeH+92*}7s7=hu7vPh@a)Uc zB&(ME-Gjh9q;P&030+HRR6e+I99W#FEgjWP$Gr0=6$4bcnpr_y{Cw9f>esu!hNo(> zpz_N?&{Eq)3A0qe924KcY|eB~WN2>ptAu{}??#p!r#^sdK5rXY@SMzDvw1QvPpnI?O~u=M~mm*n9smU%|%*`@c<`3Vj~QhBb6RqjUA{!*O(ee~yes zI|+(&Z~!VTWsL{zt2680k}oMw`)((GT-E)1c?%A84?u8Q36^E{Uj3o+eyH4qq z(x0hn9nm$;J!wUzCupGjE$&1y9gv5RH5HsQ@T61gi*Kg)6Uo;h!TGP0(v@ge` zva|_rj;h?VesxjZb9L~-(X9EKS1r~JXkAff37>SIvB!^&;Duhjgi#?1_s06JtXd;0 z$g6LW_ehl!-jOwXB>#WuFt19*Tp-Tpe3x*D^DYf{nRZYNyGEf|=qAET4ph@@$V_je2R?^s7{ajs$_=ukqu&)#1!08ysXcVh1r zV;q9ev)l}RtQ4NJj|(U;0~~(G()X*RhHoA6fNinFhq+JB9bIp%?7HLg=dMlf0qo~m z&Q<&$od^OIslZ?bL5zQ(OCy_~smgfAk;V^>yJSPcNca~DFSKbi7tZj8<^>uAFl?b1 z&tBa>z66W#fhv!;I{%nYrFBfJYMnLw9cAG0I_zD%Fm`k3rU%0Tif-sTv+C>cDc`pY z^9jG>!$3gQ0>=XxvD_o$$v@rW+yQ0|?8a?JlaN2dqV>o}oz z+fgzO(v|~n=C47CU=}DKDU{ zO0Xct_v3@K53pH2h-i1zp;`_a2CL~k8TZ*&W7J|uIj;YHSRHeT$SHJW1Ua=E3_}Ue zFfrkb-jJ@QJeB&StzV*eAwUcDv$9szQ-|RgjJ4$i!lPhOJu9N_UkiQN%9Msm45=-U z)OO`0bdxSST`Igcy-V!ew=&x#%^PP?)&nbBlxW#~#ytF2sryhdeWUQAa@j&t>%4XF zzfb(0fYe<3GyGv5>=(4(iuGHiH%TY4eNz`lHtpd+6#{XB3-^T+Ali?G^&0>2!LgMl z%3a-=Yq($gG9;^ye%sO6*Sn4ixK4CW2X)nmjD>!6XXWb6Fyk0u-{M7&qv@w<|a^=;5~)QC0kI?PQW3b#71`i~!nliVwjPC0%O`Pu&SiB}uAPfMOsAwDm> zkaM}+!)b2$8Xx4@xbG3YD-9$1Ep&a$hcA}${DwwM#f0S7MuQTM501D-wcNw%j17pm z&{kPZ4h8Mmn;!}U8!~R?>yPSLWAbbtvgjt5h<0jW(D<482zzj>BC)=$X^RRJ6+OUV zQi6>5f48ilYP6vdd7aFQL4QqeP??Gro<*SaL6vTGwJOzSrSyql6#{?HLes<2w}U^R zHKT9@mlf*4>N{gXc@Hk+Y)dBG{*Jde)* zyhznpUY^oymB7uWa@mqVo6#*U>Z7-v%^Y=US&zcjR-MeY_U4asf!f?c;MtnYxb&p~;e@00GBJi{|92ys6>a!5UTt1k00^4Eo3e#3mp#C=YZoL+E=qh`=AteD zb{-ESwdalNww`<{W6X7-meiTQy-jM4Y3ae;@ROKT+vhUKr|7pUOCu6CdQ! zK(x`h36Mo!`_b^p9~Tn-%8}To!RUkBUXWoIv3-)yz%y8Vw5-Rt#J`KGc1DN%D|@xh zV$s5L zNrazgjSuJ+mpaXo8#3^_o&IdXK(y#ZcB@#%en=E0I)n>V81u_$AbLw$DTHs2b&F0t zcM@S|Jz#i=hQ?UE2{btX_%3T>mfwiTN$^?;Nr8)M3zyX;@P_O_xiWYm=fR7vl>G(G zQO6pm(RpR-1BPL40Y5R1Y!e%pPI=2ve!_Z+h6x5R6@$_SQ$&yVoV~ooV3Ui*og2le zDfmV0w>keA&_Nd5`bLqNOOpzr>MOc5&A;{n$Ugp$rGo%#y8MFStilI3R%H~0u-CG? z3-xTRbNo(i^jUJgD*@g4R7A0nfq1LM0tK?DZ~3HoQ-@6pADHthOZ}kV7GYpV^f(T| zNI6i~8i^xyv+EpT^00F{!Am8mGR~3~bC%lJ9(AASZo&uop`)}LM*bfTRJk4M9rkm# z|38si7E&Hbm9_b+S2IqN_2g$Bycypt=0bt*#^iO%q->kuEDftQf5%xPixx!qkKcZn zlyKjt39k?Kv99wRaSy+bNglTTSVQQ>3t>m{x^@5CzUh+wz3H zk$~v~b98h6OQfyri<{gusgD+e81;B1c&sQH@_%eB3jmClzLU2SWMl|5s?J!r(SwF} zWJc!16Qg&`gmT%J9SU=;Vs%Y2En%;2?$&o6ml4&*@ z8Y+_4?dDR`u&~qaWo5Orn&^3E1;uEn3a{i?*)Y~^7|=XFt9R{zusYn>6|rUuIDU2@ zYA*x{0(n=z!9-aeY5P^5-22amFLI%@3egj_c}X8%?IqcsiQg;C&*<1@Yo=ZXkQJf^BzwN&$)SVZ)5cWU6{$Bh4?_3nN6?5uB VLJ<@*tGPFOv#VBDs*OD!{vSd?Nm2j+ literal 0 HcmV?d00001 diff --git a/content/sql-part-3/studio/_index.md b/content/sql-part-3/studio/_index.md index 233ba7ef..f670997a 100644 --- a/content/sql-part-3/studio/_index.md +++ b/content/sql-part-3/studio/_index.md @@ -7,9 +7,7 @@ weight = 3 ## Getting Started -For this weeks studio fork this [GitHub repository](https://github.com/launchcodeeducation/SQL-Part-3-Studio) and clone to your computer. - -In Azure Data Studio, click on the open button and navigate to where you saved the git repository you just cloned and open the notebook. +For this week's studio, open up the `SQL-Part-3-Studio.ipynb` notebook in `data-analysis-projects/sql-part-3/studio` using Azure Data Studio. ## In Your Notebook