From 3c3808b069f4e081396b6d807ccc27f7bbf67fa3 Mon Sep 17 00:00:00 2001 From: Evelyn Date: Wed, 25 Mar 2026 21:24:45 -0400 Subject: [PATCH 1/2] finish Assignment 1 --- .../assignments/DC_Cohort/ER_Yazhu Lin.png | Bin 0 -> 54800 bytes .../assignments/DC_Cohort/assignment1.sql | 140 ++++++++++------ 04_this_cohort/Mar26_Live code.sql | 46 ++++++ .../live_code/module_2/module_2.sqbpro | 154 ++++++++++-------- 4 files changed, 223 insertions(+), 117 deletions(-) create mode 100644 02_activities/assignments/DC_Cohort/ER_Yazhu Lin.png create mode 100644 04_this_cohort/Mar26_Live code.sql diff --git a/02_activities/assignments/DC_Cohort/ER_Yazhu Lin.png b/02_activities/assignments/DC_Cohort/ER_Yazhu Lin.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bef3ba9744a173623809133a69986b79ba8b20 GIT binary patch literal 54800 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%0D5zWkIXb$Y6_gkKEw4t)Q$FfoE0~Yio7X*#Qawa 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 2000 +ORDER BY c.customer_last_name, c.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 @@ -118,10 +143,24 @@ When inserting the new vendor, you need to appropriately align the columns to be VALUES(col1,col2,col3,col4,col5) */ --QUERY 9 - - - - +CREATE TEMP TABLE 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', + 'Fresh Focused', + 'Thomas', + 'Rosenthal' +); --END QUERY @@ -132,10 +171,12 @@ HINT: you might need to search for strfrtime modifers sqlite on the web to know and year are! Limit to 25 rows of output. */ --QUERY 10 - - - - +SELECT + customer_id, + STRFTIME('%m', market_date) AS month, + STRFTIME('%Y', market_date) AS year +FROM customer_purchases +LIMIT 25; --END QUERY @@ -146,8 +187,13 @@ 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 11 +SELECT + customer_id, + 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 - - ---END QUERY diff --git a/04_this_cohort/Mar26_Live code.sql b/04_this_cohort/Mar26_Live code.sql new file mode 100644 index 000000000..31ebfa284 --- /dev/null +++ b/04_this_cohort/Mar26_Live code.sql @@ -0,0 +1,46 @@ +/* MODULE 2 */ +/* LEFT JOIN */ + + +/* 1. There are products that have been bought +... but are there products that have not been bought? +Use a LEFT JOIN to find out*/ +SELECT DISTINCT +p.product_id +,cp.product_id as [cp.product_id] +,product_name + +FROM product as p +LEFT JOIN customer_purchases as cp + ON p.product_id = cp.product_id + +/* 2. Directions of LEFT JOINs matter ...*/ + +FROM customer_purchases as cp +LEFT JOIN product as p + ON p.product_id = cp.product_id; + + +/* 3. As do which values you filter on ... */ +SELECT DISTINCT +p.product_id +,cp.product_id + + + +/* 4. Without using a RIGHT JOIN, make this query return the RIGHT JOIN result set +...**Hint, flip the order of the joins** ... + +SELECT * + +FROM product_category AS pc +LEFT JOIN product AS p + ON pc.product_category_id = p.product_category_id + ORDER by pc.product_category_id + +...Note how the row count changed from 24 to 23 +*/ + + + +-------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/04_this_cohort/live_code/module_2/module_2.sqbpro b/04_this_cohort/live_code/module_2/module_2.sqbpro index 06850fe25..4508abf97 100644 --- a/04_this_cohort/live_code/module_2/module_2.sqbpro +++ b/04_this_cohort/live_code/module_2/module_2.sqbpro @@ -1,109 +1,143 @@ -
/* MODULE 2 */ +/* MODULE 2 */ /* SELECT */ /* 1. Select everything in the customer table */ -SELECT +SELECT * From customer; /* 2. Use sql as a calculator */ - +SELECT 1+1 AS addition, 10*5 as multiplication, pi() as pi; /* 3. Add order by and limit clauses */ - - +SELECT * +FROM customer +ORDER BY customer_first_name +LIMIT 10; /* 4. Select multiple specific columns */ - +SELECT customer_first_name, customer_last_name +FROM customer; /* 5. Add a static value in a column */ - +SELECT 2026 as this_year, 'March' as this_month, customer_id +FROM customer -------------------------------------------------------------------------------------------------------------------------------------------- -/* MODULE 2 */ +/* MODULE 2 */ /* WHERE */ /* 1. Select only customer 1 from the customer table */ SELECT * FROM customer -WHERE - +WHERE customer_id=1; /* 2. Differentiate between AND and OR */ - - +SELECT * +FROM customer +WHERE customer_id=1 +OR customer_id=2; -- OR is two rows, AND is 0 rows /* 3. IN */ - +SELECT * +FROM customer +WHERE customer_id IN (3,4,5,6); /* 4. LIKE */ - +SELECT* FROM product +WHERE product_name LIKE '%pepper%'; /* 5. Nulls and Blanks*/ - - +SELECT * +FROM product +WHERE product_size is NULL +OR product_size =''; /* 6. BETWEEN x AND y */ +SELECT * +FROM customer +WHERE customer_id BETWEEN 1 AND 20; + -------------------------------------------------------------------------------------------------------------------------------------------- -/* MODULE 2 */ +/* MODULE 2 */ /* CASE */ SELECT * /* 1. Add a CASE statement declaring which days vendors should come */ - +,CASE WHEN vendor_type = 'Fresh Focused' THEN 'Wednesday' + WHEN vendor_type='Eggs & Meats' THEN 'Thursday' + ELSE 'Saturday' + End as day_of_specialty /* 2. Add another CASE statement for Pie Day */ - +,CASE WHEN vendor_name = "Annie's Pies" + THEN 'Annie is the best' + End as pi_day /* 3. Add another CASE statement with an ELSE clause to handle rows evaluating to False */ - - - +,CASE WHEN vendor_name LIKE '%PIE%' + THEN 'Wednesday' + ELSE 'FRIDAY' + END AS another_pie_day + +FROM vendor; /* 4. Experiment with selecting a different column instead of just a string value */ +SELECT* +,CASE WHEN cost_to_customer_per_qty<1.00 +THEN cost_to_customer_per_qty*5 +ELSE cost_to_customer_per_qty + 2 +END AS inflation +FROM cutomer_purchases FROM vendor -------------------------------------------------------------------------------------------------------------------------------------------- -/* MODULE 2 */ +/* MODULE 2 */ /* DISTINCT */ /* 1. Compare how many customer_ids are the customer_purchases table, one select with distinct, one without */ -- 4221 rows -SELECT customer_id FROM customer_purchases - +SELECT customer_id FROM customer_purchases ; +SELECT DISTINCT customer_id FROM customer_purchases /* 2. Compare the difference between selecting market_day in market_date_info, with and without distinct: what do these difference mean?*/ - + SELECT market_day + FROM market_date_info; + + SELECT DISTINCT market_day + FROM market_date_info - /* 3. Which vendor has sold products to a customer */ - +SELECT DISTINCT vendor_id +FROM customer_purchases; /* 4. Which vendor has sold products to a customer ... and which product was it */ - +SELECT DISTINCT vendor_id, product_id +FROM customer_purchases; /* 5. Which vendor has sold products to a customer ... and which product was it? ... AND to whom was it sold*/ - +SELECT DISTINCT vendor_id, product_id, customer_id +FROM customer_purchases -------------------------------------------------------------------------------------------------------------------------------------------- -/* MODULE 2 */ +/* MODULE 2 */ /* INNER JOIN */ @@ -111,9 +145,16 @@ SELECT customer_id FROM customer_purchases ... use an INNER JOIN to see only products that have been purchased */ -- without table aliases +Select product_name, +vendor_id, +market_date, +customer_id, +customer_purchases.product_id, +product.product_id - - +From product +Inner join customer_purchases + ON customer_purchases.product_id=product.product_id; /* 2. Using the Query #4 from DISTINCT earlier (Which vendor has sold products to a customer AND which product was it AND to whom was it sold) @@ -121,46 +162,19 @@ SELECT customer_id FROM customer_purchases Add customers' first and last names with an INNER JOIN */ -- using table aliases +SELECT DISTINCT vendor_id, +product_id, +customer_id, +customer_first_name, +customer_last_name +FROM customer_purchases AS cp +INNER JOIN customer AS c + ON c.customer_id = cp.customer_id -------------------------------------------------------------------------------------------------------------------------------------------- -/* MODULE 2 */ -/* LEFT JOIN */ - - -/* 1. There are products that have been bought -... but are there products that have not been bought? -Use a LEFT JOIN to find out*/ - - -/* 2. Directions of LEFT JOINs matter ...*/ - - - - -/* 3. As do which values you filter on ... */ - - - - -/* 4. Without using a RIGHT JOIN, make this query return the RIGHT JOIN result set -...**Hint, flip the order of the joins** ... - -SELECT * - -FROM product_category AS pc -LEFT JOIN product AS p - ON pc.product_category_id = p.product_category_id - ORDER by pc.product_category_id - -...Note how the row count changed from 24 to 23 -*/ - - - --------------------------------------------------------------------------------------------------------------------------------------------- -/* MODULE 2 */ +-- Reference to file "/Users/eve/sql/04_this_cohort/Mar26_Live code.sql" (not supported by this version) --/* MODULE 2 */ /* Multiple Table JOINs */ @@ -176,4 +190,4 @@ LEFT JOIN product AS p Why do we have more rows now?*/ - + From 4875c2d25dea23ba755ec05587e682b58e113b53 Mon Sep 17 00:00:00 2001 From: Evelyn Date: Wed, 25 Mar 2026 22:38:59 -0400 Subject: [PATCH 2/2] Add Assignment1.md Section 4 response --- 02_activities/assignments/DC_Cohort/Assignment1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02_activities/assignments/DC_Cohort/Assignment1.md b/02_activities/assignments/DC_Cohort/Assignment1.md index f650c9752..093fdb253 100644 --- a/02_activities/assignments/DC_Cohort/Assignment1.md +++ b/02_activities/assignments/DC_Cohort/Assignment1.md @@ -209,5 +209,5 @@ Consider, for example, concepts of fariness, inequality, social structures, marg ``` -Your thoughts... +Databases might seem like just a technical tool for storing information, but after reading this article, I started to realize they actually reflect certain values and assumptions. For example, the system described in the article assumes that everyone fits into a traditional family structure, which is not true for many people. Because of this, some individuals were excluded or faced difficulties when the database could not recognize their situation. This made me think that databases can create unfairness, even if that is not the intention. In my everyday life, I also see similar situations, like when filling out forms that only allow limited options for gender or family background. These systems simplify people’s identities, but in doing so, they may ignore important differences and experiences. As someone new to this topic, I am beginning to understand that technology is not neutral, and the way databases are designed can shape how people are treated in society. ```