From 159fd309c82b717282a2f00dc154b0b52cbaf560 Mon Sep 17 00:00:00 2001 From: Rohan2677 Date: Sun, 10 Aug 2025 23:58:20 -0400 Subject: [PATCH 1/4] assignment --- 02_activities/assignments/assignment1.sql | 33 +++++++++++++++++------ 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/02_activities/assignments/assignment1.sql b/02_activities/assignments/assignment1.sql index 2e89fa7af..f4a57e26a 100644 --- a/02_activities/assignments/assignment1.sql +++ b/02_activities/assignments/assignment1.sql @@ -5,21 +5,23 @@ --SELECT /* 1. Write a query that returns everything in the customer table. */ - +Select * from customer; /* 2. Write a query that displays all of the columns and 10 rows from the cus- tomer table, sorted by customer_last_name, then customer_first_ name. */ - +Select * from customer order by customer_last_name,customer_first_name limit 10; --WHERE /* 1. Write a query that returns all customer purchases of product IDs 4 and 9. */ -- option 1 +select * from customer_purchases where product_id in (4,9) order by product_id; --- option 2 +-- option 2 +Select * from customer_purchases where product_id=4 or product_id=9 order by product_id; /*2. Write a query that returns all customer purchases and a new calculated column 'price' (quantity * cost_to_customer_per_qty), filtered by vendor IDs between 8 and 10 (inclusive) using either: @@ -27,10 +29,12 @@ filtered by vendor IDs between 8 and 10 (inclusive) using either: 2. one condition using BETWEEN */ -- option 1 +select *,(quantity* cost_to_customer_per_qty) as price from customer_purchases where vendor_id>=8 and vendor_id<=10 order by vender id; --- option 2 +-- option 2 +select *,(quantity* cost_to_customer_per_qty) as price from customer_purchases where vendor_id between 8 and 10 order by vendor_id ; --CASE @@ -38,20 +42,25 @@ filtered by vendor IDs between 8 and 10 (inclusive) using either: Using the product table, write a query that outputs the product_id and product_name columns and add a column called prod_qty_type_condensed that displays the word “unit” if the product_qty_type is “unit,” and otherwise displays the word “bulk.” */ - +Select product_id,product_name, + case product_qty_type when 'unit' Then 'unit' else 'bulk' end prod_qty_type_condensed +from product order by product_name; /* 2. We want to flag all of the different types of pepper products that are sold at the market. add a column to the previous query called pepper_flag that outputs a 1 if the product_name contains the word “pepper” (regardless of capitalization), and otherwise outputs 0. */ - +Select product_id,product_name, + case product_qty_type when 'unit' Then 'unit' else 'bulk' end prod_qty_type_condensed, + case when UPPER(product_name) like '%PEPPER%' then 1 else 0 end pepper_flag +from product order by product_name; --JOIN /* 1. Write a query that INNER JOINs the vendor table to the vendor_booth_assignments table on the vendor_id field they both have in common, and sorts the result by vendor_name, then market_date. */ - +select vendor.vendor_name,vendor.vendor_owner_first_name,vendor.vendor_owner_last_name,vendor.vendor_type,vendor_booth_assignments.market_date from vendor inner join vendor_booth_assignments on vendor.vendor_id=vendor_booth_assignments.vendor_id order by vendor_name,market_date /* SECTION 3 */ @@ -60,7 +69,7 @@ vendor_id field they both have in common, and sorts the result by vendor_name, t /* 1. Write a query that determines how many times each vendor has rented a booth at the farmer’s market by counting the vendor booth assignments per vendor_id. */ - +Select vendor_id,count(vendor_id) from vendor_booth_assignments group by vendor_id; /* 2. The Farmer’s Market Customer Appreciation Committee wants to give a bumper sticker to everyone who has ever spent more than $2000 at the market. Write a query that generates a list @@ -68,7 +77,15 @@ of customers for them to give stickers to, sorted by last name, then first name. HINT: This query requires you to join two tables, use an aggregate function, and use the HAVING keyword. */ +SELECT + customer.customer_first_name,customer.customer_last_name,sum(cost_to_customer_per_qty*quantity) +FROM + customer +INNER JOIN customer_purchases ON customer.customer_id = customer_purchases.customer_id +GROUP BY +customer.customer_id +HAVING sum(cost_to_customer_per_qty*quantity) >2000; --Temp Table /* 1. Insert the original vendor table into a temp.new_vendor and then add a 10th vendor: From 60896f91445ab767cfb5d5a48aeb708bdc158758 Mon Sep 17 00:00:00 2001 From: Rohan2677 Date: Mon, 11 Aug 2025 00:01:08 -0400 Subject: [PATCH 2/4] assignment --- 02_activities/assignments/assignment1.sql | 1 - 1 file changed, 1 deletion(-) diff --git a/02_activities/assignments/assignment1.sql b/02_activities/assignments/assignment1.sql index f4a57e26a..182512f17 100644 --- a/02_activities/assignments/assignment1.sql +++ b/02_activities/assignments/assignment1.sql @@ -79,7 +79,6 @@ HINT: This query requires you to join two tables, use an aggregate function, and SELECT customer.customer_first_name,customer.customer_last_name,sum(cost_to_customer_per_qty*quantity) - FROM customer INNER JOIN customer_purchases ON customer.customer_id = customer_purchases.customer_id From 09e8690454fa3e56c6fc420c7081dbbb2d558868 Mon Sep 17 00:00:00 2001 From: Rohan2677 Date: Mon, 11 Aug 2025 01:00:42 -0400 Subject: [PATCH 3/4] assignment --- 02_activities/assignments/assignment1.sql | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/02_activities/assignments/assignment1.sql b/02_activities/assignments/assignment1.sql index 182512f17..d24efe5fb 100644 --- a/02_activities/assignments/assignment1.sql +++ b/02_activities/assignments/assignment1.sql @@ -98,19 +98,30 @@ When inserting the new vendor, you need to appropriately align the columns to be VALUES(col1,col2,col3,col4,col5) */ +create table temp.new_vendor as select * from vendor +insert into new_vendor (vendor_id,vendor_name,vendor_type,vendor_owner_first_name,vendor_owner_last_name) values (10,"Thomass Superfood Store", "a Fresh Focused store", "Thomas","Rosenthal") -- Date /*1. Get the customer_id, month, and year (in separate columns) of every purchase in the customer_purchases table. - HINT: you might need to search for strfrtime modifers sqlite on the web to know what the modifers for month and year are! */ +Select customer_id,strftime('%m',customer_purchases.market_date),strftime('%Y' ,customer_purchases.market_date) from customer_purchases /* 2. Using the previous query as a base, determine how much money each customer spent in April 2022. Remember that money spent is quantity*cost_to_customer_per_qty. HINTS: you will need to AGGREGATE, GROUP BY, and filter... + but remember, STRFTIME returns a STRING for your WHERE statement!! */ + +SELECT + customer.customer_first_name,customer.customer_last_name,sum(cost_to_customer_per_qty*quantity) +FROM + customer +INNER JOIN customer_purchases ON customer.customer_id = customer_purchases.customer_id and strftime('%Y',customer_purchases.market_date)='2022' and strftime('%m',customer_purchases.market_date)='04' +GROUP BY +customer.customer_id From 46f097b12712eaa0165990113fe97df0b4bba0ad Mon Sep 17 00:00:00 2001 From: Rohan2677 Date: Mon, 11 Aug 2025 01:08:21 -0400 Subject: [PATCH 4/4] assignment_data model --- .../assignments/images/Logical_data_model.png | Bin 0 -> 25022 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 02_activities/assignments/images/Logical_data_model.png diff --git a/02_activities/assignments/images/Logical_data_model.png b/02_activities/assignments/images/Logical_data_model.png new file mode 100644 index 0000000000000000000000000000000000000000..d370945b1422d378777058a5116ea0fa08324f82 GIT binary patch literal 25022 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