From 746c3a1d67788ecb45f39883fee28ed8294e1793 Mon Sep 17 00:00:00 2001 From: Catherine Lin Date: Wed, 28 Oct 2026 02:30:14 -0400 Subject: [PATCH] completed assignment one --- .../assignments/DC_Cohort/Assignment1.md | 10 ++ .../assignments/DC_Cohort/assignment1.sql | 91 ++++++++++++++++-- .../DC_Cohort/conceptual_model.png | Bin 0 -> 18069 bytes 3 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 02_activities/assignments/DC_Cohort/conceptual_model.png diff --git a/02_activities/assignments/DC_Cohort/Assignment1.md b/02_activities/assignments/DC_Cohort/Assignment1.md index d5ff55ce4..fdeb72937 100644 --- a/02_activities/assignments/DC_Cohort/Assignment1.md +++ b/02_activities/assignments/DC_Cohort/Assignment1.md @@ -210,4 +210,14 @@ Consider, for example, concepts of fariness, inequality, social structures, marg ``` Your thoughts... +One of the value systems that I encounter in my daily life is related to my PhD research, which focuses on cancer treatment. +Patient databases typically include basic personal information such as name and date of birth, along with health-related info including diagnosis, symptoms, and treatment protocol. +Currently, the main hospitals in downtown Toronto do not have a central system where the patient data is shared, and requires manual updating at each hospital if the patient is transferred or receiving treatments at different locations. +While the standalone systems can help address security and privacy concerns, from a database perspective, this system can introduce a lot of inconsistencies. +For example, if pathology uses a drop-down list of different markers, this list may not be the same between the hospital databases along with different naming conventions (eg. CD4 vs. CD-4). +In certain instances, the patient info may be very different if they went to Hospital 1 for treatment of Disease A, and then separately to Hospital 2 for Disease 2, as there can be no communication between the two treatments and thus no manual updating of the database occurs. +It’s important to have the full picture for informing treatment protocols, and inconsistencies in information/databases may affect this decision, especially if the visits are not disclosed by the patient. +Additionally, from a data analysis or study perspective, it may be difficult to compare between patient cohorts if the data is not consistent. +At a broader scale, this means that hospitals may be excluded from the data analysis or studies if there is not a rigorous recordkeeping/database system, which is more common in less developed areas. +Ultimately, this can lead to underrepresentation of these populations when developing treatments. ``` diff --git a/02_activities/assignments/DC_Cohort/assignment1.sql b/02_activities/assignments/DC_Cohort/assignment1.sql index a80923591..e19a2caa8 100644 --- a/02_activities/assignments/DC_Cohort/assignment1.sql +++ b/02_activities/assignments/DC_Cohort/assignment1.sql @@ -7,7 +7,8 @@ /* 1. Write a query that returns everything in the customer table. */ --QUERY 1 - +SELECT * +FROM customer; --END QUERY @@ -17,7 +18,10 @@ 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 @@ -28,7 +32,10 @@ sorted by customer_last_name, then customer_first_ name. */ Limit to 25 rows of output. */ --QUERY 3 - +SELECT * +FROM customer_purchases +WHERE product_id in (4, 9) +LIMIT 25; --END QUERY @@ -43,7 +50,12 @@ 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 @@ -56,7 +68,15 @@ columns and add a column called prod_qty_type_condensed that displays the word 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 @@ -67,7 +87,20 @@ add a column to the previous query called pepper_flag that outputs a 1 if the pr 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 @@ -79,6 +112,15 @@ vendor_id field they both have in common, and sorts the result by market_date, t Limit to 24 rows of output. */ --QUERY 7 +SELECT + v.vendor_id, + vba.market_date, + v.vendor_name +FROM vendor as v +INNER JOIN vendor_booth_assignments as vba + ON v.vendor_id = vba.vendor_id +ORDER BY market_date, vendor_name +LIMIT 24; @@ -93,7 +135,9 @@ Limit to 24 rows of output. */ at the farmer’s market by counting the vendor booth assignments per vendor_id. */ --QUERY 8 - +SELECT vendor_id, COUNT(vendor_id) AS times_rented +FROM vendor_booth_assignments +GROUP BY vendor_id; --END QUERY @@ -106,7 +150,17 @@ 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 AS c +INNER JOIN customer_purchases AS cp + ON c.customer_id = cp.customer_id +GROUP BY c.customer_id +HAVING SUM(cp.quantity * cp.cost_per_quantity) > 2000 +ORDER BY c.customer_last_name, c.customer_first_name; --END QUERY @@ -125,7 +179,12 @@ VALUES(col1,col2,col3,col4,col5) */ --QUERY 10 +CREATE TEMP TABLE new_vendor AS + SELECT * + FROM vendor AS v; +INSERT INTO new_vendor + VALUES(10, 'Thomass Superfood Store', 'Fresh Focused', 'Thomas', 'Rosenthal'); --END QUERY @@ -139,7 +198,12 @@ 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 @@ -153,7 +217,14 @@ 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 diff --git a/02_activities/assignments/DC_Cohort/conceptual_model.png b/02_activities/assignments/DC_Cohort/conceptual_model.png new file mode 100644 index 0000000000000000000000000000000000000000..4209b822a28e166ddab8e17835f14455564b572c GIT binary patch literal 18069 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