From a4d8e126c259230e9393a53d5ed4411c6b0e58b3 Mon Sep 17 00:00:00 2001 From: ruokun-ai <45320479+ruokun-ai@users.noreply.github.com> Date: Mon, 4 May 2026 03:13:08 -0400 Subject: [PATCH 1/2] Add files via upload --- .../Entity-Relationship Diagram.pdf | Bin 0 -> 18003 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 02_activities/assignments/Microcredential_Cohort/Entity-Relationship Diagram.pdf diff --git a/02_activities/assignments/Microcredential_Cohort/Entity-Relationship Diagram.pdf b/02_activities/assignments/Microcredential_Cohort/Entity-Relationship Diagram.pdf new file mode 100644 index 0000000000000000000000000000000000000000..507515fb47cb324188e23a636dbbdd437220e8c3 GIT binary patch literal 18003 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 G{%!zcJwST^ literal 0 HcmV?d00001 From a3dba8e37460f8a4858c6f40003a17f951b38fd0 Mon Sep 17 00:00:00 2001 From: ruokun-ai <45320479+ruokun-ai@users.noreply.github.com> Date: Mon, 4 May 2026 05:39:49 -0400 Subject: [PATCH 2/2] Add files via upload --- .../Microcredential_Cohort/assignment1.sql | 368 ++++++++++-------- 1 file changed, 209 insertions(+), 159 deletions(-) diff --git a/02_activities/assignments/Microcredential_Cohort/assignment1.sql b/02_activities/assignments/Microcredential_Cohort/assignment1.sql index 2ec561e2a..abd0b2619 100644 --- a/02_activities/assignments/Microcredential_Cohort/assignment1.sql +++ b/02_activities/assignments/Microcredential_Cohort/assignment1.sql @@ -1,159 +1,209 @@ - /* ASSIGNMENT 1 */ ---Please write responses between the QUERY # and END QUERY blocks -/* SECTION 2 */ - - ---SELECT -/* 1. Write a query that returns everything in the customer table. */ ---QUERY 1 - - - - ---END QUERY - - -/* 2. Write a query that displays all of the columns and 10 rows from the customer table, -sorted by customer_last_name, then customer_first_ name. */ ---QUERY 2 - - - - ---END QUERY - - ---WHERE -/* 1. Write a query that returns all customer purchases of product IDs 4 and 9. -Limit to 25 rows of output. */ ---QUERY 3 - - - - ---END QUERY - - - -/*2. Write a query that returns all customer purchases and a new calculated column 'price' (quantity * cost_to_customer_per_qty), -filtered by customer IDs between 8 and 10 (inclusive) using either: - 1. two conditions using AND - 2. one condition using BETWEEN -Limit to 25 rows of output. -*/ ---QUERY 4 - - - - ---END QUERY - - ---CASE -/* 1. Products can be sold by the individual unit or by bulk measures like lbs. or oz. -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.” */ ---QUERY 5 - - - - ---END QUERY - - -/* 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. */ ---QUERY 6 - - - - ---END QUERY - - ---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 market_date, then vendor_name. -Limit to 24 rows of output. */ ---QUERY 7 - - - - ---END QUERY - - - -/* SECTION 3 */ - --- AGGREGATE -/* 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. */ ---QUERY 8 - - - - ---END QUERY - - -/* 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 -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. */ ---QUERY 9 - - - - ---END QUERY - - ---Temp Table -/* 1. Insert the original vendor table into a temp.new_vendor and then add a 10th vendor: -Thomass Superfood Store, a Fresh Focused store, owned by Thomas Rosenthal - -HINT: This is two total queries -- first create the table from the original, then insert the new 10th vendor. -When inserting the new vendor, you need to appropriately align the columns to be inserted -(there are five columns to be inserted, I've given you the details, but not the syntax) - --> To insert the new row use VALUES, specifying the value you want for each column: -VALUES(col1,col2,col3,col4,col5) -*/ ---QUERY 10 - - - - ---END QUERY - - --- 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! -Limit to 25 rows of output. */ ---QUERY 11 - - - - ---END QUERY - - -/* 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... -AND be sure you remove the LIMIT from the previous query before aggregating!! */ ---QUERY 12 - - - - ---END QUERY + /* ASSIGNMENT 1 */ +--Please write responses between the QUERY # and END QUERY blocks +/* SECTION 2 */ + + +--SELECT +/* 1. Write a query that returns everything in the customer table. */ +--QUERY 1 +SELECT * FROM customer; +--END QUERY + + +/* 2. Write a query that displays all of the columns and 10 rows from the customer table, +sorted by customer_last_name, then customer_first_ name. */ +--QUERY 2 +SELECT * +FROM customer +ORDER BY customer_last_name,customer_first_name +LIMIT 10; +--END QUERY + + +--WHERE +/* 1. Write a query that returns all customer purchases of product IDs 4 and 9. +Limit to 25 rows of output. */ +--QUERY 3 +SELECT * +FROM customer_purchases +WHERE product_id IN (4,9) +LIMIT 25; +--END QUERY + + + +/*2. Write a query that returns all customer purchases and a new calculated column 'price' (quantity * cost_to_customer_per_qty), +filtered by customer IDs between 8 and 10 (inclusive) using either: + 1. two conditions using AND + 2. one condition using BETWEEN +Limit to 25 rows of output. +*/ +--QUERY 4 +SELECT +product_id, +vendor_id, +market_date, +customer_id, +quantity, +cost_to_customer_per_qty, +transaction_time, +quantity * cost_to_customer_per_qty AS price +FROM customer_purchases +WHERE customer_id BETWEEN 8 AND 10 +LIMIT 25; +--END QUERY + + +--CASE +/* 1. Products can be sold by the individual unit or by bulk measures like lbs. or oz. +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.” */ +--QUERY 5 +SELECT +product_id +,product_name +,CASE + WHEN product_qty_type = 'unit' THEN 'unit' + ELSE 'bulk' + END AS prod_qty_type_condensed +FROM product; +--END QUERY + + +/* 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. */ +--QUERY 6 +SELECT +product_id +,product_name +,CASE WHEN product_qty_type = 'unit' THEN 'unit' + ELSE 'bulk' + END AS prod_qty_type_condensed +,CASE WHEN product_name LIKE '%pepper%' THEN 1 + ELSE 0 + END AS pepper_flag +FROM product; +--END QUERY + + +--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 market_date, then vendor_name. +Limit to 24 rows of output. */ +--QUERY 7 +SELECT +vd.vendor_id, +vendor_name, +vendor_type, +vendor_owner_first_name, +vendor_owner_last_name, +booth_number, +market_date + +FROM vendor AS vd +INNER JOIN vendor_booth_assignments AS vb + ON vd.vendor_id = vb.vendor_id +ORDER BY market_date, vendor_name +LIMIT 24; +--END QUERY + + + +/* SECTION 3 */ + +-- AGGREGATE +/* 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. */ +--QUERY 8 +SELECT +vendor_id, +COUNT(booth_number) AS rent_booth + +FROM vendor_booth_assignments +GROUP BY vendor_id; +--END QUERY + + +/* 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 +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. */ +--QUERY 9 +SELECT +c.customer_last_name, +c.customer_first_name, +c.customer_id, +c.customer_postal_code, +ROUND(SUM(quantity * cost_to_customer_per_qty),2) AS total_spent + +FROM customer AS c +INNER JOIN customer_purchases AS cp + ON c.customer_id = cp.customer_id +GROUP BY c.customer_id +HAVING total_spent > 2000 +ORDER BY customer_last_name, customer_first_name; +--END QUERY + + +--Temp Table +/* 1. Insert the original vendor table into a temp.new_vendor and then add a 10th vendor: +Thomass Superfood Store, a Fresh Focused store, owned by Thomas Rosenthal + +HINT: This is two total queries -- first create the table from the original, then insert the new 10th vendor. +When inserting the new vendor, you need to appropriately align the columns to be inserted +(there are five columns to be inserted, I've given you the details, but not the syntax) + +-> To insert the new row use VALUES, specifying the value you want for each column: +VALUES(col1,col2,col3,col4,col5) +*/ +--QUERY 10 +DROP TABLE IF EXISTS temp.new_vendor; + +CREATE TABLE temp.new_vendor AS +SELECT * FROM vendor; + +INSERT INTO temp.new_vendor (vendor_id, vendor_name, vendor_type, vendor_owner_first_name, vendor_owner_last_name) +VALUES(10,'Thomass Superfood Store','Fresh Focused','Thomas','Rosenthal'); + +SELECT * from temp.new_vendor; +--END QUERY + + +-- 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! +Limit to 25 rows of output. */ +--QUERY 11 +SELECT +customer_id, +strftime('%m', market_date) AS month, +strftime('%Y', market_date) AS year + +FROM customer_purchases +LIMIT 25; +--END QUERY + + +/* 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... +AND be sure you remove the LIMIT from the previous query before aggregating!! */ +--QUERY 12 +SELECT +customer_id, +strftime('%m', market_date) AS month, +strftime('%Y', market_date) AS year, +SUM(quantity * cost_to_customer_per_qty) AS total_spent + +FROM customer_purchases +WHERE strftime('%m', market_date) = '04' + AND strftime('%Y', market_date) = '2022' +GROUP BY customer_id; +--END QUERY