From a65fbb7afeda28e47bdeab0edcb93aab106769a3 Mon Sep 17 00:00:00 2001 From: mzzubair37 Date: Thu, 6 Aug 2026 21:37:01 -0400 Subject: [PATCH 1/4] Assignment Done --- .../assignments/DC_Cohort/assignment1.sql | 97 ++++++++++++++----- 1 file changed, 71 insertions(+), 26 deletions(-) diff --git a/02_activities/assignments/DC_Cohort/assignment1.sql b/02_activities/assignments/DC_Cohort/assignment1.sql index 2ec561e2a..229145df2 100644 --- a/02_activities/assignments/DC_Cohort/assignment1.sql +++ b/02_activities/assignments/DC_Cohort/assignment1.sql @@ -6,9 +6,8 @@ --SELECT /* 1. Write a query that returns everything in the customer table. */ --QUERY 1 - - - +SELECT* +FROM customer; --END QUERY @@ -16,9 +15,10 @@ /* 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 @@ -27,9 +27,10 @@ sorted by customer_last_name, then customer_first_ name. */ /* 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 @@ -42,9 +43,10 @@ filtered by customer IDs between 8 and 10 (inclusive) using either: Limit to 25 rows of output. */ --QUERY 4 - - - +SELECT quantity*cost_per_quantity AS price +FROM customer_purchases +WHERE customer_id BETWEEN 8 AND 10 +LIMIT 25; --END QUERY @@ -55,9 +57,14 @@ Using the product table, write a query that outputs the product_id and product_n 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 @@ -66,7 +73,18 @@ if the product_qty_type is “unit,” and otherwise displays the word “bulk. 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; @@ -78,9 +96,16 @@ contains the word “pepper” (regardless of capitalization), and otherwise out 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 + v.*, + vba.* +FROM vendor v +INNER JOIN vendor_booth_assignments vba + ON v.vendor_id = vba.vendor_id +ORDER BY + vba.market_date, + v.vendor_name +LIMIT 24; --END QUERY @@ -92,9 +117,12 @@ Limit to 24 rows of output. */ /* 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(*) AS booth_rental_count +FROM vendor_booth_assignments +GROUP BY vendor_id +ORDER BY vendor_id; --END QUERY @@ -105,9 +133,22 @@ 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_id, + c.customer_first_name, + c.customer_last_name, + SUM(cp.quantity * cp.cost_per_quantity) AS total_spent +FROM customer c +INNER JOIN customer_purchases cp + ON c.customer_id = cp.customer_id +GROUP BY + c.customer_id, + c.customer_first_name, + c.customer_last_name +HAVING SUM(cp.quantity * cp.cost_per_quantity) > 2000 +ORDER BY + c.customer_last_name, + c.customer_first_name; --END QUERY @@ -124,8 +165,12 @@ When inserting the new vendor, you need to appropriately align the columns to be 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, 'Thomas Superfood Store', 'Fresh Focused', 'Thomas', 'Rosenthal') --END QUERY From 4bb43bcdc20f0abafca1a1e5156dae105cd7aaa1 Mon Sep 17 00:00:00 2001 From: mzzubair37 Date: Sat, 15 Aug 2026 21:40:50 -0400 Subject: [PATCH 2/4] Assignment-Two --- .../assignments/DC_Cohort/Assignment2.md | 2 ++ .../assignments/DC_Cohort/assignment2.sql | 33 ++++++++++++++++++ 05_src/sql/farmersmarket.db | Bin 876544 -> 876544 bytes 3 files changed, 35 insertions(+) diff --git a/02_activities/assignments/DC_Cohort/Assignment2.md b/02_activities/assignments/DC_Cohort/Assignment2.md index be0eff3a5..8105bbf5d 100644 --- a/02_activities/assignments/DC_Cohort/Assignment2.md +++ b/02_activities/assignments/DC_Cohort/Assignment2.md @@ -59,6 +59,8 @@ The store wants to keep customer addresses. Propose two architectures for the CU Your answer... ``` + + *** ## Section 2: diff --git a/02_activities/assignments/DC_Cohort/assignment2.sql b/02_activities/assignments/DC_Cohort/assignment2.sql index 4079c18ae..a1257fa94 100644 --- a/02_activities/assignments/DC_Cohort/assignment2.sql +++ b/02_activities/assignments/DC_Cohort/assignment2.sql @@ -23,6 +23,9 @@ Edit the appropriate columns -- you're making two edits -- and the NULL rows wil All the other rows will remain the same. */ --QUERY 1 +SELECT +COALESCE(product_name, '') || ', ' || COALESCE(product_size, 'unit') || ' (' || product_qty_type || ')' +FROM product; @@ -41,6 +44,15 @@ HINT: One of these approaches uses ROW_NUMBER() and one uses DENSE_RANK(). Filter the visits to dates before April 29, 2022. */ --QUERY 2 +SELECT + customer_id, + market_date, + DENSE_RANK() OVER ( + PARTITION BY customer_id + ORDER BY market_date + ) AS visit_number +FROM customer_purchases +WHERE market_date < '2022-04-29'; @@ -53,6 +65,27 @@ only the customer’s most recent visit. HINT: Do not use the previous visit dates filter. */ --QUERY 3 +SELECT + customer_id, + market_date, + DENSE_RANK() OVER ( + PARTITION BY customer_id + ORDER BY market_date DESC + ) AS visit_number +FROM customer_purchases; + +SELECT * +FROM ( + SELECT + customer_id, + market_date, + DENSE_RANK() OVER ( + PARTITION BY customer_id + ORDER BY market_date DESC + ) AS visit_number + FROM customer_purchases +) AS visits +WHERE visit_number = 1; diff --git a/05_src/sql/farmersmarket.db b/05_src/sql/farmersmarket.db index cdce8220434513de121ca98797580afd6e96871e..fb6c49a1b0d13db1c7066c5cccf70a91f6a004dc 100644 GIT binary patch delta 2490 zcmbW2PfQb89LM{nrEg|BZK<^aTUH;dE*e{zKOHPX8XefOL3S0DMB@djOmqVMV`mxy z9zYJuMV56rG}#l`=#2zj6B}==SCd^%d)UN1arNra>>G%_QQt`M@J-q`pZ9ye_ueNn z3!Cb~rus`VCi{H8e{fFYjN&|gkWzsBWa44ZP#3%5i~bp1ivAcq5ZR72B6egb5)Hoy z{}etSjtkquBVk6!3Vi5g=zi#OsGWbsZ}5x!Sw6=7%Pn)4xCHwjyYaNE)nK#fE(p5f zAfd2>w~cCb7LA&QB!1(sl}uX}<=(WIO-sE+(VnQ#Ba;V^OPP^NoP+OXuUFH7&aO# zS4;Uq)niNgR}kbooN^OCch6JGo$7!fk;D!0`CGRv2~C#gj8f2}TB;p_BhGn3y;7Mr z_BhVIHV71Fuff5Zjjo#|rDPT?G*GVHsTp?Bm^5p}7LS#(hww2tZLRjN9HyO9HUWXU zb5{jAkUI#$*`0%2S~*Iqkc&f3@8IIf>Z_HbADpzPi5X3mQwN&bEv6MsQF5`*l#?}8 zO0_myPSP@RF6t^b;=VY%o&%&KO}MQhS<%!!EhDL6s@nw61ghIEAVhVW03$rrZ33tq z)olW#*uC8*v<|6m6W~;EPqzu2YT5gG2;CRhuiIp9)=zcY1u#^%36KLWx8v{SAi(eE z(63?uMTG6ozDu9#qnkpuDUfueo)2&Oa5X1;l73 zGUe-kpeGyshQnBwLDq7X^%VK0rzh>csZ|+<(S!(Xi}7vBICcH#`U1y1T*R zrB8ad+$~xG&+e_=_O;zz@4x@u_LVPazwx$*;nu*#I=jWx!OYUy7K7u*3E;Hg1aTk^ Qi^JjYIHAVcmN2pMKdrG|h5!Hn delta 969 zcmXw%TTqN)7{~X0zi+oaw$-k5KnIPHLAxDPn?sujsT8SHTZ@oFnbs-PRto8~sfVJ2 zF~)^4lCfiknbo**k+|r}g>_+=VMa5q@qaTe{=e^iPXG7W@7q>iN~=P$=f1 z^-vM?cwlW3vrbjtPf#m@5GxdCr}cB(*m8NI7(vVU8Su#XQt-l98hG+<8CZFz0W2TA z1Xhn~!NVh>=h*Eyu>O{~rhzttO~bk1xuH_<;>{Ycb?_p1bZ|M??AZiX4OD`s`h}aP ze+4+u(kF(`_c}mVk0>_x3@=u*=>2C+uaOaa>s+KiVa|d;WaaUHO^1#Gk--5|77z2*K*pc-@|@s zSsk%*7Q>FyO7S>EQ*o*=sw`((c97g5DibxAGb5{@g=wXU-aS?7Ww@5n`wpeq7;4>M zOSal97Q-x(rSx7{lu%=n(o6vr%)p9iGE2FH)>JS(+eg+MSnR5R-ClCXD#LV%>6q0$ z#B3q?xN?QCE+D@Voo7AZo-b&6`bUY9pS>#W^`BlijyX@rT2)~O`CQU6! zCJJ<5+b!h(BbkkQYoaY#Y^*ZEXEWIyES7Deg*TF!KF&y5vD!wOdWLYs0gDXs-IEqq zx6znK3e#Z^i$(f|wsi83qwQszwD==aDYyz=DR^7R?x@0WGWoaQTqn*+%6OxxD*yn)G2mT9C~E-x@r8?OqTjX##T#+$gkMw3l^B Date: Sat, 15 Aug 2026 21:44:41 -0400 Subject: [PATCH 3/4] Assignment Done --- .../assignments/DC_Cohort/assignment2.sql | 125 +++++++++++++++--- 1 file changed, 108 insertions(+), 17 deletions(-) diff --git a/02_activities/assignments/DC_Cohort/assignment2.sql b/02_activities/assignments/DC_Cohort/assignment2.sql index a1257fa94..7ca6f3243 100644 --- a/02_activities/assignments/DC_Cohort/assignment2.sql +++ b/02_activities/assignments/DC_Cohort/assignment2.sql @@ -24,7 +24,7 @@ All the other rows will remain the same. */ --QUERY 1 SELECT -COALESCE(product_name, '') || ', ' || COALESCE(product_size, 'unit') || ' (' || product_qty_type || ')' +COALESCE(product_name, '') || ', ' || COALESCE(product_size, 'unit') || ' (' || product_qty_type || ')' AS FINAL_PRODUCT_LIST FROM product; @@ -47,12 +47,17 @@ Filter the visits to dates before April 29, 2022. */ SELECT customer_id, market_date, - DENSE_RANK() OVER ( - PARTITION BY customer_id + ROW_NUMBER() OVER ( + PARTITION BY customer_id ORDER BY market_date ) AS visit_number -FROM customer_purchases -WHERE market_date < '2022-04-29'; +FROM ( + SELECT DISTINCT + customer_id, + market_date + FROM customer_purchases + WHERE market_date < '2022-04-29' +) AS visits; @@ -68,23 +73,33 @@ HINT: Do not use the previous visit dates filter. */ SELECT customer_id, market_date, - DENSE_RANK() OVER ( + ROW_NUMBER() OVER ( PARTITION BY customer_id ORDER BY market_date DESC ) AS visit_number -FROM customer_purchases; +FROM ( + SELECT DISTINCT + customer_id, + market_date + FROM customer_purchases +) AS visits; SELECT * FROM ( SELECT customer_id, market_date, - DENSE_RANK() OVER ( + ROW_NUMBER() OVER ( PARTITION BY customer_id ORDER BY market_date DESC ) AS visit_number - FROM customer_purchases -) AS visits + FROM ( + SELECT DISTINCT + customer_id, + market_date + FROM customer_purchases + ) AS visits +) AS numbered_visits WHERE visit_number = 1; @@ -99,7 +114,15 @@ You can make this a running count by including an ORDER BY within the PARTITION Filter the visits to dates before April 29, 2022. */ --QUERY 4 - +SELECT + customer_id, + product_id, + market_date, + COUNT(*) OVER ( + PARTITION BY customer_id, product_id + ) AS product_purchase_count +FROM customer_purchases +WHERE market_date < '2022-04-29'; --END QUERY @@ -118,7 +141,14 @@ 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. */ --QUERY 5 - +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; --END QUERY @@ -127,6 +157,9 @@ Hint: you might need to use INSTR(product_name,'-') to find the hyphens. INSTR w /* 2. Filter the query to show any product_size value that contain a number with REGEXP. */ --QUERY 6 +SELECT * +FROM product +WHERE product_size REGEXP '[0-9]'; @@ -144,6 +177,36 @@ HINT: There are a possibly a few ways to do this query, but if you're struggling with a UNION binding them. */ --QUERY 7 +WITH daily_sales AS ( + SELECT + market_date, + SUM(quantity * cost_per_quantity) AS total_sales + FROM customer_purchases + GROUP BY market_date +), +ranked_sales AS ( + SELECT + market_date, + total_sales, + RANK() OVER (ORDER BY total_sales DESC) AS sales_rank + FROM daily_sales +) + +SELECT + market_date, + total_sales, + 'best day' AS day_type +FROM ranked_sales +WHERE sales_rank = 1 + +UNION + +SELECT + market_date, + total_sales, + 'worst day' AS day_type +FROM ranked_sales +WHERE sales_rank = (SELECT MAX(sales_rank) FROM ranked_sales); @@ -165,7 +228,20 @@ How many customers are there (y). Before your final group by you should have the product of those two queries (x*y). */ --QUERY 8 - +SELECT + v.vendor_name, + p.product_name, + 5 * COUNT(DISTINCT c.customer_id) * vi.quantity*original_price AS total_sales +FROM vendor_inventory vi +JOIN vendor v + ON vi.vendor_id = v.vendor_id +JOIN product p + ON vi.product_id = p.product_id +CROSS JOIN customer c +GROUP BY + v.vendor_name, + p.product_name, + vi.quantity*original_price; --END QUERY @@ -178,8 +254,13 @@ It should use all of the columns from the product table, as well as a new column Name the timestamp column `snapshot_timestamp`. */ --QUERY 9 - - +DROP TABLE IF EXISTS temp.product_units; +CREATE TEMP TABLE product_units AS +SELECT + product.*, + CURRENT_TIMESTAMP AS snapshot_timestamp +FROM product +WHERE product_qty_type = 'unit'; --END QUERY @@ -188,7 +269,12 @@ Name the timestamp column `snapshot_timestamp`. */ This can be any product you desire (e.g. add another record for Apple Pie). */ --QUERY 10 - +INSERT INTO product_units +SELECT + product.*, + CURRENT_TIMESTAMP AS snapshot_timestamp +FROM product +WHERE product_name = 'Apple Pie'; --END QUERY @@ -200,7 +286,12 @@ This can be any product you desire (e.g. add another record for Apple Pie). */ HINT: If you don't specify a WHERE clause, you are going to have a bad time.*/ --QUERY 11 - +DELETE FROM product_units +WHERE product_name = 'Apple Pie' + AND snapshot_timestamp < ( + SELECT MAX(snapshot_timestamp) + FROM product_units + WHERE product_name = 'Apple Pie'); --END QUERY From 5bb2c043a975c1593072b8cd6f8842b5006e3c88 Mon Sep 17 00:00:00 2001 From: mzzubair37 Date: Thu, 20 Aug 2026 13:27:42 -0400 Subject: [PATCH 4/4] Add files via upload --- .../LOGICAL DATA MODEL FOR BOOKSTORE.pdf | Bin 0 -> 21689 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 02_activities/assignments/Microcredential_Cohort/LOGICAL DATA MODEL FOR BOOKSTORE.pdf diff --git a/02_activities/assignments/Microcredential_Cohort/LOGICAL DATA MODEL FOR BOOKSTORE.pdf b/02_activities/assignments/Microcredential_Cohort/LOGICAL DATA MODEL FOR BOOKSTORE.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d2d9bc4246180bd2793acfd672f686e50bdbbb26 GIT binary patch literal 21689 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 literal 0 HcmV?d00001