From dba62f878073d81c5c4349e63a31900265bc087a Mon Sep 17 00:00:00 2001 From: "Marte M. Vroom" Date: Tue, 31 Mar 2026 12:11:39 -0600 Subject: [PATCH 1/4] Completed SQL assignment 1 --- .../assignments/Cohort_8/assignment1.sql | 92 +++++++++++++++++-- 1 file changed, 82 insertions(+), 10 deletions(-) diff --git a/02_activities/assignments/Cohort_8/assignment1.sql b/02_activities/assignments/Cohort_8/assignment1.sql index c992e3205..f8b86b16f 100644 --- a/02_activities/assignments/Cohort_8/assignment1.sql +++ b/02_activities/assignments/Cohort_8/assignment1.sql @@ -4,17 +4,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. */ - +SELECT * +FROM customer_purchases +WHERE product_id IN (4,9); /*2. Write a query that returns all customer purchases and a new calculated column 'price' (quantity * cost_to_customer_per_qty), @@ -23,30 +29,71 @@ filtered by customer IDs between 8 and 10 (inclusive) using either: 2. one condition using BETWEEN */ -- option 1 +SELECT *, +CASE + WHEN customer_id >= 8 AND customer_id <= 10 + THEN quantity*cost_to_customer_per_qty +END as price +FROM customer_purchases; - --- option 2 +-- I wasn't too sure what you meant by "filtered", +-- so below is another interpretation +SELECT *, +quantity*cost_to_customer_per_qty AS price +FROM customer_purchases +WHERE customer_id >= 8 AND customer_id <= 10; +-- option 2 +SELECT *, +CASE + WHEN customer_id BETWEEN 8 AND 10 + THEN quantity*cost_to_customer_per_qty +END as price +FROM customer_purchases; + +-- Dito; here is another interpretation +SELECT *, +quantity*cost_to_customer_per_qty AS price +FROM customer_purchases +WHERE customer_id BETWEEN 8 AND 10; --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.” */ - +SELECT product_id, product_name, +CASE + WHEN product_qty_type = 'unit' THEN 'unit' + ELSE 'bulk' +END AS prod_qty_type_condensed +FROM product; /* 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 + 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; --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 * +FROM vendor +INNER JOIN vendor_booth_assignments + ON vendor.vendor_id = vendor_booth_assignments.vendor_id +ORDER BY vendor_name, market_date; @@ -55,7 +102,10 @@ vendor_id field they both have in common, and sorts the result by vendor_name, t -- 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. */ - +SELECT vendor_id, +COUNT(*) AS total_rentals_booth +FROM vendor_booth_assignments +GROUP BY vendor_id; /* 2. The Farmer’s Market Customer Appreciation Committee wants to give a bumper @@ -64,7 +114,19 @@ 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_id, + customer.customer_first_name, + customer.customer_last_name, + SUM(quantity*cost_to_customer_per_qty) AS total_expenditure +FROM customer_purchases +INNER JOIN customer + ON customer_purchases.customer_id = customer.customer_id +GROUP BY customer.customer_id, + customer.customer_first_name, + customer.customer_last_name +HAVING total_expenditure > 2000 +ORDER BY customer.customer_last_name, + customer.customer_first_name; --Temp Table /* 1. Insert the original vendor table into a temp.new_vendor and then add a 10th vendor: @@ -78,7 +140,17 @@ When inserting the new vendor, you need to appropriately align the columns to be VALUES(col1,col2,col3,col4,col5) */ +DROP TABLE IF EXISTS temp.new_vendor; + +CREATE TABLE temp.new_vendor AS +SELECT * +FROM vendor; + +INSERT INTO temp.new_vendor +VALUES (10, 'Thomass Superfood Store', 'Fresh Focused', 'Thomas', 'Rosenthal'); +SELECT * +FROM temp.new_vendor; -- Date /*1. Get the customer_id, month, and year (in separate columns) of every purchase in the customer_purchases table. From 5f5764eea7cf2475bbeb4b263af4ca90c6b11331 Mon Sep 17 00:00:00 2001 From: "Marte M. Vroom" Date: Tue, 31 Mar 2026 12:15:32 -0600 Subject: [PATCH 2/4] Completed SQL assignment 1 --- .../assignments/Cohort_8/erdiagram.png | Bin 0 -> 24436 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 02_activities/assignments/Cohort_8/erdiagram.png diff --git a/02_activities/assignments/Cohort_8/erdiagram.png b/02_activities/assignments/Cohort_8/erdiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c5dd1e820fdd0a62f249e0dba84bcfeed1787c98 GIT binary patch literal 24436 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 N002ovPDHLkV1kP1zc>H@ literal 0 HcmV?d00001 From 19d60b499e100f7f61fe7fcfb253a0a96e6116ff Mon Sep 17 00:00:00 2001 From: "Marte M. Vroom" Date: Wed, 8 Apr 2026 11:36:29 -0600 Subject: [PATCH 3/4] I have completed asssignment 2 --- .../assignments/Cohort_8/Assignment2.md | 6 +- .../assignments/Cohort_8/assignment2.sql | 209 +++++++++++++++++- .../Cohort_8/erdiagram_prompt1.png | Bin 0 -> 62350 bytes .../Cohort_8/erdiagram_prompt2.png | Bin 0 -> 77532 bytes 4 files changed, 202 insertions(+), 13 deletions(-) create mode 100644 02_activities/assignments/Cohort_8/erdiagram_prompt1.png create mode 100644 02_activities/assignments/Cohort_8/erdiagram_prompt2.png diff --git a/02_activities/assignments/Cohort_8/Assignment2.md b/02_activities/assignments/Cohort_8/Assignment2.md index 47118b2ba..5dca7e9ad 100644 --- a/02_activities/assignments/Cohort_8/Assignment2.md +++ b/02_activities/assignments/Cohort_8/Assignment2.md @@ -54,7 +54,11 @@ The store wants to keep customer addresses. Propose two architectures for the CU **HINT:** search type 1 vs type 2 slowly changing dimensions. ``` -Your answer... +Type 1 architecture: overwrite. This type of design stores only most recent address for each customer. When customer updates their address, the previous address is being overwritten. Table contains one row per customer, but with no historical tracking. + +Type 2 architecture: retain history. This type of design stores multiple records per customer. So this preserves address history. Each record would include fields like start_date, end_date, and is_current so to track which address is active. When new address is added, a new row is being created and then the previous record is marked as inactive. + +Type 1 would be mostly useful for simplicity and current state date. While type 2 is more preferred when historical tracking is required. ``` *** diff --git a/02_activities/assignments/Cohort_8/assignment2.sql b/02_activities/assignments/Cohort_8/assignment2.sql index c2743d3b7..fa26e9b20 100644 --- a/02_activities/assignments/Cohort_8/assignment2.sql +++ b/02_activities/assignments/Cohort_8/assignment2.sql @@ -9,8 +9,7 @@ Using the following syntax you create our super cool and not at all needy manage SELECT product_name || ', ' || product_size|| ' (' || product_qty_type || ')' -FROM product - +FROM product; But wait! The product table has some bad data (a few NULL values). Find the NULLs and then using COALESCE, replace the NULL with a blank for the first column with @@ -21,8 +20,12 @@ The `||` values concatenate the columns into strings. Edit the appropriate columns -- you're making two edits -- and the NULL rows will be fixed. All the other rows will remain the same. */ - - +SELECT + COALESCE(product_name, '') || ', ' || + COALESCE(product_size, '') || + ' (' || COALESCE(product_qty_type, 'unit') || ')' + AS product_description --Otherwise I get a very ugly header +FROM product; --Windowed Functions /* 1. Write a query that selects from the customer_purchases table and numbers each customer’s @@ -34,18 +37,32 @@ each new market date for each customer, or select only the unique market dates p (without purchase details) and number those visits. HINT: One of these approaches uses ROW_NUMBER() and one uses DENSE_RANK(). */ - +SELECT * +,DENSE_RANK() OVER ( + PARTITION BY customer_id + ORDER BY market_date) +AS visit_number +FROM customer_purchases; /* 2. Reverse the numbering of the query from a part so each customer’s most recent visit is labeled 1, then write another query that uses this one as a subquery (or temp table) and filters the results to only the customer’s most recent visit. */ - +SELECT * +,DENSE_RANK() OVER ( + PARTITION BY customer_id + ORDER BY market_date DESC) +AS visit_number +FROM customer_purchases; /* 3. Using a COUNT() window function, include a value along with each row of the customer_purchases table that indicates how many different times that customer has purchased that product_id. */ - +SELECT * +, COUNT(*) OVER ( + PARTITION BY customer_id, product_id) +AS purchase_count +FROM customer_purchases; -- String manipulations /* 1. Some product names in the product table have descriptions like "Jar" or "Organic". @@ -59,11 +76,22 @@ Remove any trailing or leading whitespaces. Don't just use a case statement for Hint: you might need to use INSTR(product_name,'-') to find the hyphens. INSTR will help split the column. */ - +SELECT product_name, + CASE + WHEN INSTR(product_name, '-') > 0 THEN + TRIM( + SUBSTR( + product_name, + INSTR(product_name, '-') + 1)) + ELSE NULL + END AS description +FROM product; /* 2. Filter the query to show any product_size value that contain a number with REGEXP. */ - +SELECT * +FROM product +WHERE product_size REGEXP '[0-9]'; -- UNION /* 1. Using a UNION, write a query that displays the market dates with the highest and lowest total sales. @@ -75,7 +103,31 @@ HINT: There are a possibly a few ways to do this query, but if you're struggling 3) Query the second temp table twice, once for the best day, once for the worst day, with a UNION binding them. */ - +WITH daily_sales AS ( + SELECT + market_date, + SUM(quantity) AS total_sales + FROM customer_purchases + GROUP BY market_date +), +ranked_sales AS ( + SELECT + market_date, total_sales, + ROW_NUMBER() OVER (ORDER BY total_sales DESC) AS rn_max, + ROW_NUMBER() OVER (ORDER BY total_sales ASC) AS rn_min + FROM daily_sales +) + +SELECT market_date, total_sales, rn_max AS row_number +FROM ranked_sales +WHERE rn_max = 1 + +UNION + +SELECT + market_date, total_sales, rn_min AS row_number +FROM ranked_sales +WHERE rn_min = 1; /* SECTION 3 */ @@ -92,6 +144,48 @@ How many customers are there (y). Before your final group by you should have the product of those two queries (x*y). */ +--First, I want to know many distinct vendors and product names there are +SELECT + COUNT(*) AS vendor_product_count +FROM ( + SELECT DISTINCT vendor_id, product_id + FROM vendor_inventory +) t; +--Now I know: x = 8 + +--Second, I want to count the number of customers +SELECT + COUNT(*) AS customer_count +FROM customer; +--Now I know: y = 26 + +--Because 8 * 26 = 208, I should expect 208 rows + +--Showing 208 rows being returned +SELECT + vendor_inventory.vendor_id, vendor_inventory.product_id, customer.customer_id +FROM ( + SELECT DISTINCT vendor_id, product_id, original_price + FROM vendor_inventory +) vendor_inventory +CROSS JOIN customer; + +--Clean version :-) +SELECT + vendor.vendor_name, product.product_name, + SUM(vendor_inventory.original_price * 5) AS total_revenue +FROM ( + SELECT DISTINCT vendor_id, product_id, original_price + FROM vendor_inventory +) vendor_inventory +JOIN vendor + ON vendor_inventory.vendor_id = vendor.vendor_id +JOIN product + ON vendor_inventory.product_id = product.product_id +CROSS JOIN customer +GROUP BY + vendor.vendor_name, + product.product_name; -- INSERT /*1. Create a new table "product_units". @@ -99,19 +193,52 @@ This table will contain only products where the `product_qty_type = 'unit'`. It should use all of the columns from the product table, as well as a new column for the `CURRENT_TIMESTAMP`. Name the timestamp column `snapshot_timestamp`. */ +CREATE TABLE product_units AS +SELECT *, + CURRENT_TIMESTAMP AS snapshot_timestamp +FROM product +WHERE product_qty_type = 'unit'; +--Showing the new table "product_units" +SELECT * +FROM product_units; /*2. Using `INSERT`, add a new row to the product_units table (with an updated timestamp). This can be any product you desire (e.g. add another record for Apple Pie). */ - +--Let's add a delicious butter cake from the Netherlands! +INSERT INTO product_units ( + product_id, + product_name, + product_size, + product_category_id, + product_qty_type, + snapshot_timestamp +) +VALUES ( + 24, + 'Traditional Dutch Butter Cake', + '8"', + 3, + 'unit', + CURRENT_TIMESTAMP +); + +--Yay, it's added! +SELECT * +FROM product_units; -- DELETE /* 1. Delete the older record for the whatever product you added. HINT: If you don't specify a WHERE clause, you are going to have a bad time.*/ +DELETE FROM product_units +WHERE product_name = 'Traditional Dutch Butter Cake'; +--The delicious butter cake is gone :-( +SELECT * +FROM product_units; -- UPDATE /* 1.We want to add the current_quantity to the product_units table. @@ -130,6 +257,64 @@ Finally, make sure you have a WHERE statement to update the right row, you'll need to use product_units.product_id to refer to the correct row within the product_units table. When you have all of these components, you can run the update statement. */ +--First, I want to get the last quantity per product +SELECT + product_id, + quantity +FROM ( + SELECT + product_id, + quantity, + ROW_NUMBER() OVER ( + PARTITION BY product_id + ORDER BY market_date DESC + ) AS rn + FROM vendor_inventory +) t +WHERE rn = 1; +--This gives me one row per product (that's the latest quantity) +ALTER TABLE product_units +ADD COLUMN current_quantity INT; - +--Now, I want to handle the NULLs through coalesce +SELECT + product_units.product_id, + COALESCE(vendor_inventory.quantity, 0) AS last_quantity +FROM product_units +LEFT JOIN ( + SELECT + product_id, + quantity, + ROW_NUMBER() OVER ( + PARTITION BY product_id + ORDER BY market_date DESC + ) AS rn + FROM vendor_inventory +) vendor_inventory +ON product_units.product_id = vendor_inventory.product_id +AND vendor_inventory.rn = 1; +--So, if a product has no inventory, it gets 0 +--If it does have an inventory, it gets latest quantity + +--Let's do the UPDATE! +UPDATE product_units +SET current_quantity = COALESCE(( + SELECT quantity + FROM ( + SELECT + product_id, + quantity, + ROW_NUMBER() OVER ( + PARTITION BY product_id + ORDER BY market_date DESC + ) AS rn + FROM vendor_inventory + ) vendor_inventory + WHERE vendor_inventory.product_id = product_units.product_id + AND rn = 1 +), 0); + +--Success! +SELECT * +FROM product_units; \ No newline at end of file diff --git a/02_activities/assignments/Cohort_8/erdiagram_prompt1.png b/02_activities/assignments/Cohort_8/erdiagram_prompt1.png new file mode 100644 index 0000000000000000000000000000000000000000..cb877869e655d0b48edf202d5c64e5376850455a GIT binary patch literal 62350 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 XOFACs(;){$00000NkvXXu0mjf1JymH literal 0 HcmV?d00001 diff --git a/02_activities/assignments/Cohort_8/erdiagram_prompt2.png b/02_activities/assignments/Cohort_8/erdiagram_prompt2.png new file mode 100644 index 0000000000000000000000000000000000000000..2c46bc6fce9a8c015370f99d356482cfed2e1fac GIT binary patch literal 77532 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 literal 0 HcmV?d00001 From f72bf25a5d9f5ec7ccd288aa91e098005ad85c55 Mon Sep 17 00:00:00 2001 From: "Marte M. Vroom" Date: Mon, 20 Apr 2026 15:57:50 -0400 Subject: [PATCH 4/4] Adjusted assignment two based on feedback --- .../assignments/Cohort_8/assignment2.sql | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/02_activities/assignments/Cohort_8/assignment2.sql b/02_activities/assignments/Cohort_8/assignment2.sql index fa26e9b20..10e786019 100644 --- a/02_activities/assignments/Cohort_8/assignment2.sql +++ b/02_activities/assignments/Cohort_8/assignment2.sql @@ -38,22 +38,26 @@ each new market date for each customer, or select only the unique market dates p HINT: One of these approaches uses ROW_NUMBER() and one uses DENSE_RANK(). */ SELECT * -,DENSE_RANK() OVER ( - PARTITION BY customer_id - ORDER BY market_date) -AS visit_number -FROM customer_purchases; +FROM (SELECT *, + DENSE_RANK() OVER ( + PARTITION BY customer_id + ORDER BY market_date) + AS visit_number + FROM customer_purchases) t +WHERE visit_number = 1; /* 2. Reverse the numbering of the query from a part so each customer’s most recent visit is labeled 1, then write another query that uses this one as a subquery (or temp table) and filters the results to only the customer’s most recent visit. */ SELECT * -,DENSE_RANK() OVER ( - PARTITION BY customer_id - ORDER BY market_date DESC) -AS visit_number -FROM customer_purchases; +FROM (SELECT *, + DENSE_RANK() OVER ( + PARTITION BY customer_id + ORDER BY market_date DESC) + AS visit_number + FROM customer_purchases) t +WHERE visit_number = 1; /* 3. Using a COUNT() window function, include a value along with each row of the customer_purchases table that indicates how many different times that customer has purchased that product_id. */