diff --git a/02_activities/assignments/DC_Cohort/Assignment1.md b/02_activities/assignments/DC_Cohort/Assignment1.md index d5ff55ce4..95e2d27a5 100644 --- a/02_activities/assignments/DC_Cohort/Assignment1.md +++ b/02_activities/assignments/DC_Cohort/Assignment1.md @@ -145,6 +145,7 @@ Steps to complete this part of the assignment: 1. Write a query that `INNER JOIN`s 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. *** +### Write SQL ## Section 3: You can start this section following *session 3*. @@ -187,6 +188,7 @@ Limit to 25 rows of output. **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!! + *** ## Section 4: @@ -209,5 +211,11 @@ Consider, for example, concepts of fariness, inequality, social structures, marg ``` -Your thoughts... +Academic research relies on structured databases such as citation indexes, bibliographic databases, and editorial management systems that may initially appear neutral. However, their underlying structures maintain values that can determine which results are shared. + +At the structural level, relational tables can define "valuable research" through variables like `Author`, `Paper`, and `Citation` links. This almost equates intellectual value with metrics like the h-index and journal Impact Factors. In doing so, this favors authorship over communal knowledge frameworks that cannot be resolved into a single primary key. For instance, collaborative community insights or multi-generational knowledge lack a 'natural' slot within an individualistic author table. Because the current structure requires individual authors to credit, the communal context of the findings are erased before it reaches the peer review stage. + +Furthermore, expected vocabularies and standardized metadata tables tend to maintain an English default. Based on this, non-English and regional studies might be filtered out, unindexed, or difficult to find with current search algorithms, or may potentially result in lower publication impact/reach. This setup seems to signal that local knowledge only matters if it can be translated into the expected terminology. Consequently, scholars outside well-funded institutions must spend additional effort molding their findings to match popular classifications. + +This impacts our society directly; such data systems can restrict our understanding and knowledge to whatever neatly fits inside the current relational structures. ``` diff --git a/02_activities/assignments/DC_Cohort/Logical_Table_Relationship.png b/02_activities/assignments/DC_Cohort/Logical_Table_Relationship.png new file mode 100644 index 000000000..736b8177b Binary files /dev/null and b/02_activities/assignments/DC_Cohort/Logical_Table_Relationship.png differ diff --git a/02_activities/assignments/DC_Cohort/assignment1.sql b/02_activities/assignments/DC_Cohort/assignment1.sql index a80923591..aa1da10a8 100644 --- a/02_activities/assignments/DC_Cohort/assignment1.sql +++ b/02_activities/assignments/DC_Cohort/assignment1.sql @@ -6,20 +6,18 @@ --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 @@ -27,10 +25,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,10 +40,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,10 +53,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,10 +68,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; --END QUERY @@ -78,10 +88,12 @@ 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 * +FROM vendor +INNER JOIN vendor_booth_assignments + ON vendor.vendor_id = vendor_booth_assignments.vendor_id +ORDER BY vendor_booth_assignments.market_date, vendor.vendor_name +LIMIT 24; --END QUERY @@ -92,10 +104,9 @@ 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(vendor_id) AS booth_assignments_count +FROM vendor_booth_assignments +GROUP BY vendor_id; --END QUERY @@ -105,10 +116,13 @@ 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 customer.customer_last_name, customer.customer_first_name +FROM customer +JOIN customer_purchases + ON customer.customer_id = customer_purchases.customer_id +GROUP BY customer.customer_id, customer.customer_last_name, customer.customer_first_name +HAVING SUM(customer_purchases.quantity * customer_purchases.cost_per_quantity) > 2000 +ORDER BY customer.customer_last_name, customer.customer_first_name; --END QUERY @@ -124,10 +138,11 @@ When inserting the new vendor, you need to appropriately align the columns to be VALUES(col1,col2,col3,col4,col5) */ --QUERY 10 +CREATE TEMP 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'); --END QUERY @@ -138,10 +153,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 11 - - - - +SELECT + customer_id, + strftime('%m', market_date) AS month, + strftime('%Y', market_date) AS year +FROM customer_purchases +LIMIT 25; --END QUERY @@ -152,8 +169,11 @@ 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, + SUM(quantity * cost_per_quantity) AS total_spent +FROM customer_purchases +WHERE strftime('%m', market_date) = '04' + AND strftime('%Y', market_date) = '2022' +GROUP BY customer_id; --END QUERY