From 0fb084fba5b8f111732bba892a4fbcdd7d6a7008 Mon Sep 17 00:00:00 2001 From: vanesa-fleurs Date: Tue, 10 Sep 2019 16:04:56 -0500 Subject: [PATCH 1/3] almost finished --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 2990f94..08c61c0 100644 --- a/README.md +++ b/README.md @@ -35,15 +35,30 @@ Answer the following data queries. Keep track of the SQL you write by pasting it ### find all customers that live in London. Returns 6 records. > This can be done with SELECT and WHERE clauses +``` +select contact_title, contact_name, country, city +from customers +where city = 'London' +``` ### find all customers with postal code 1010. Returns 3 customers. > This can be done with SELECT and WHERE clauses +``` +select contact_title, contact_name, country, city +from customers +where postal_code = '1010' +``` ### find the phone number for the supplier with the id 11. Should be (010) 9984510. > This can be done with SELECT and WHERE clauses +``` +select company_name, phone +from suppliers +where supplier_id = '11' +``` ### list orders descending by the order date. The order with date 1998-05-06 should be at the top. > This can be done with SELECT, WHERE, and ORDER BY clauses From 511e3a60472ec5c74f1c3f577e6fbc3b740ce33b Mon Sep 17 00:00:00 2001 From: vanesa-fleurs Date: Tue, 10 Sep 2019 16:45:15 -0500 Subject: [PATCH 2/3] finished queries --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 08c61c0..0c32200 100644 --- a/README.md +++ b/README.md @@ -62,10 +62,20 @@ where supplier_id = '11' ### list orders descending by the order date. The order with date 1998-05-06 should be at the top. > This can be done with SELECT, WHERE, and ORDER BY clauses +``` +select customer_id, ship_name, order_date +from orders +order by order_date desc +``` ### find all suppliers who have names longer than 20 characters. You can use `length(company_name)` to get the length of the name. Returns 11 records. > This can be done with SELECT and WHERE clauses +``` +select supplier_id, company_name, city +from suppliers +where length(company_name) > 20 +``` ### find all customers that include the word 'MARKET' in the contact title. Should return 19 records. @@ -74,7 +84,11 @@ where supplier_id = '11' > Don't forget the wildcard '%' symbols at the beginning and end of your substring to denote it can appear anywhere in the string in question > Remember to convert your contact title to all upper case for case insenstive comparing so upper(contact_title) - +``` +select * +from customers +where upper(contact_title) like '%MARKET%' +``` ### add a customer record for * customer id is 'SHIRE' @@ -85,25 +99,52 @@ where supplier_id = '11' * the postal code is '111' * the country is 'Middle Earth' > This can be done with the INSERT INTO clause +``` +insert into customers(customer_id, company_name, contact_name, address, city, postal_code, country) +values('SHIRE', 'The Shire', 'Bilbo Baggins', '1 Hobbit-Hole', 'Bag End', '111', 'Middle Earth') +``` ### update _Bilbo Baggins_ record so that the postal code changes to _"11122"_. > This can be done with UPDATE and WHERE clauses - +``` +update customers +set postal_code = '11122' +where customer_id = 'SHIRE' +``` ### list orders grouped by customer showing the number of orders per customer. _Rattlesnake Canyon Grocery_ should have 18 orders. > This can be done with SELECT, COUNT, JOIN and GROUP BY clauses. Your count should focus on a field in the Orders table, not the Customer table > There is more information about the COUNT clause on [W3 Schools](https://www.w3schools.com/sql/sql_count_avg_sum.asp) - +``` +select count(o.order_id), c.contact_name, c.company_name +from orders o join customers c +on o.customer_id = c.customer_id +group by c.contact_name, c.company_name +order by count(o.order_id) +``` ### list customers names and the number of orders per customer. Sort the list by number of orders in descending order. _Save-a-lot Markets should be at the top with 31 orders followed by _Ernst Handle_ with 30 orders. Last should be _Centro comercial Moctezuma_ with 1 order. > This can be done by adding an ORDER BY clause to the previous answer - +``` +select count(o.order_id), c.contact_name, c.company_name +from orders o join customers c +on o.customer_id = c.customer_id +group by c.contact_name, c.company_name +order by count(o.order_id) desc +``` ### list orders grouped by customer's city showing number of orders per city. Returns 69 Records with _Aachen_ showing 6 orders and _Albuquerque_ showing 18 orders. > This is very similar to the previous two queries, however, it focuses on the City rather than the CustomerName +``` +select count(o.order_id), c.city +from customers c join orders o +on o.customer_id = c.customer_id +group by c.city +order by c.city +``` ## Data Normalization From a612d4dfa8a081bd0b526b30e4057055c18242f7 Mon Sep 17 00:00:00 2001 From: vanesa-fleurs Date: Tue, 10 Sep 2019 17:07:19 -0500 Subject: [PATCH 3/3] complete --- README.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/README.md b/README.md index 0c32200..5c75d52 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,38 @@ Take the following data and normalize it into a 3NF database. | Bob | Joe | Horse | | | | | No | No | | Sam | Ginger | Dog | Miss Kitty | Cat | Bubble | Fish | Yes | No | + + + +| Person Name |Fenced Yard | City Dweller | Person Id | +|-------------|------------|--------------|--------------| +| Jane |No | Yes | 1 | +| Bob |No | No | 2 | +| Sam |Yes | No | 3 | + + +| Person Id | Pet Id | Pet Name | Pet Type | +|-------------|----------|----------|------------| +| 1 | 1 | Ellie | Dog | +| 1 | 2 | Tiger | Cat | +| 1 | 3 | Toby | Turtle | +| 2 | 4 | Joe |Horse | +| 3 | 5 | Ginger | Dog | +| 3 | 6 |Miss Kitty| Cat | +| 3 | 7 | Bubble | Fish | + + + + + + + + + + + + + --- ## Stretch Goals