From 26da04fe2249d9799d616b86f2542ac3c72e3a6c Mon Sep 17 00:00:00 2001 From: kkarmali Date: Sun, 31 Aug 2025 21:21:27 -0400 Subject: [PATCH] bookshop ERD + Employee shifts + Customer Address update options --- 02_activities/assignments/Assignment2.md | 361 +++++++----- .../assignments/Bookstore Shifts.png | Bin 0 -> 76786 bytes 02_activities/assignments/assignment2.sql | 555 +++++++++--------- .../assignments/bookstore_ERD.drawio.png | Bin 0 -> 159874 bytes 4 files changed, 478 insertions(+), 438 deletions(-) create mode 100644 02_activities/assignments/Bookstore Shifts.png create mode 100644 02_activities/assignments/bookstore_ERD.drawio.png diff --git a/02_activities/assignments/Assignment2.md b/02_activities/assignments/Assignment2.md index 5cbb4e70f..adc46b92d 100644 --- a/02_activities/assignments/Assignment2.md +++ b/02_activities/assignments/Assignment2.md @@ -1,163 +1,198 @@ -# Assignment 2: Design a Logical Model and Advanced SQL - -🚨 **Please review our [Assignment Submission Guide](https://github.com/UofT-DSI/onboarding/blob/main/onboarding_documents/submissions.md)** 🚨 for detailed instructions on how to format, branch, and submit your work. Following these guidelines is crucial for your submissions to be evaluated correctly. - -#### Submission Parameters: -* Submission Due Date: `August 17, 2025` -* Weight: 70% of total grade -* The branch name for your repo should be: `assignment-two` -* What to submit for this assignment: - * This markdown (Assignment2.md) with written responses in Section 1 - * Two Entity-Relationship Diagrams (preferably in a pdf, jpeg, png format). - * One .sql file -* What the pull request link should look like for this assignment: `https://github.com//sql/pulls/` - * Open a private window in your browser. Copy and paste the link to your pull request into the address bar. Make sure you can see your pull request properly. This helps the technical facilitator and learning support staff review your submission easily. - -Checklist: -- [ ] Create a branch called `assignment-two`. -- [ ] Ensure that the repository is public. -- [ ] Review [the PR description guidelines](https://github.com/UofT-DSI/onboarding/blob/main/onboarding_documents/submissions.md#guidelines-for-pull-request-descriptions) and adhere to them. -- [ ] Verify that the link is accessible in a private browser window. - -If you encounter any difficulties or have questions, please don't hesitate to reach out to our team via our Slack at `#cohort-6-help`. Our Technical Facilitators and Learning Support staff are here to help you navigate any challenges. - -*** - -## Section 1: -You can start this section following *session 1*, but you may want to wait until you feel comfortable wtih basic SQL query writing. - -Steps to complete this part of the assignment: -- Design a logical data model -- Duplicate the logical data model and add another table to it following the instructions -- Write, within this markdown file, an answer to Prompt 3 - - -### Design a Logical Model - -#### Prompt 1 -Design a logical model for a small bookstore. 📚 - -At the minimum it should have employee, order, sales, customer, and book entities (tables). Determine sensible column and table design based on what you know about these concepts. Keep it simple, but work out sensible relationships to keep tables reasonably sized. - -Additionally, include a date table. - -There are several tools online you can use, I'd recommend [Draw.io](https://www.drawio.com/) or [LucidChart](https://www.lucidchart.com/pages/). - -**HINT:** You do not need to create any data for this prompt. This is a logical model (ERD) only. - -#### Prompt 2 -We want to create employee shifts, splitting up the day into morning and evening. Add this to the ERD. - -#### Prompt 3 -The store wants to keep customer addresses. Propose two architectures for the CUSTOMER_ADDRESS table, one that will retain changes, and another that will overwrite. Which is type 1, which is type 2? - -**HINT:** search type 1 vs type 2 slowly changing dimensions. - -``` -Your answer... -``` - -*** - -## Section 2: -You can start this section following *session 4*. - -Steps to complete this part of the assignment: -- Open the assignment2.sql file in DB Browser for SQLite: - - from [Github](./02_activities/assignments/assignment2.sql) - - or, from your local forked repository -- Complete each question - - -### Write SQL - -#### COALESCE -1. Our favourite manager wants a detailed long list of products, but is afraid of tables! We tell them, no problem! We can produce a list with all of the appropriate details. - -Using the following syntax you create our super cool and not at all needy manager a list: -``` -SELECT -product_name || ', ' || product_size|| ' (' || product_qty_type || ')' -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 nulls, and 'unit' for the second column with nulls. - -**HINT**: keep the syntax the same, but edited the correct components with the string. 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. - -
-
- -#### Windowed Functions -1. Write a query that selects from the customer_purchases table and numbers each customer’s visits to the farmer’s market (labeling each market date with a different number). Each customer’s first visit is labeled 1, second visit is labeled 2, etc. - -You can either display all rows in the customer_purchases table, with the counter changing on each new market date for each customer, or select only the unique market dates per customer (without purchase details) and number those visits. - -**HINT**: One of these approaches uses ROW_NUMBER() and one uses DENSE_RANK(). - -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. - -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. - -
-
- -#### String manipulations -1. Some product names in the product table have descriptions like "Jar" or "Organic". These are separated from the product name with a hyphen. Create a column using SUBSTR (and a couple of other commands) that captures these, but is otherwise NULL. Remove any trailing or leading whitespaces. Don't just use a case statement for each product! - -| product_name | description | -|----------------------------|-------------| -| Habanero Peppers - Organic | Organic | - -**HINT**: you might need to use INSTR(product_name,'-') to find the hyphens. INSTR will help split the column. - -
-
- -#### UNION -1. Using a UNION, write a query that displays the market dates with the highest and lowest total sales. - -**HINT**: There are a possibly a few ways to do this query, but if you're struggling, try the following: 1) Create a CTE/Temp Table to find sales values grouped dates; 2) Create another CTE/Temp table with a rank windowed function on the previous query to create "best day" and "worst day"; 3) Query the second temp table twice, once for the best day, once for the worst day, with a UNION binding them. - -*** - -## Section 3: -You can start this section following *session 5*. - -Steps to complete this part of the assignment: -- Open the assignment2.sql file in DB Browser for SQLite: - - from [Github](./02_activities/assignments/assignment2.sql) - - or, from your local forked repository -- Complete each question - -### Write SQL - -#### Cross Join -1. Suppose every vendor in the `vendor_inventory` table had 5 of each of their products to sell to **every** customer on record. How much money would each vendor make per product? Show this by vendor_name and product name, rather than using the IDs. - -**HINT**: Be sure you select only relevant columns and rows. Remember, CROSS JOIN will explode your table rows, so CROSS JOIN should likely be a subquery. Think a bit about the row counts: how many distinct vendors, product names are there (x)? How many customers are there (y). Before your final group by you should have the product of those two queries (x\*y). - -
-
- -#### INSERT -1. Create a new table "product_units". 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`. - -2. Using `INSERT`, add a new row to the product_unit table (with an updated timestamp). This can be any product you desire (e.g. add another record for Apple Pie). - -
-
- -#### 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](https://imgflip.com/i/8iq872). - -
-
- -#### UPDATE -1. We want to add the current_quantity to the product_units table. First, add a new column, `current_quantity` to the table using the following syntax. -``` -ALTER TABLE product_units -ADD current_quantity INT; -``` - -Then, using `UPDATE`, change the current_quantity equal to the **last** `quantity` value from the vendor_inventory details. - -**HINT**: This one is pretty hard. First, determine how to get the "last" quantity per product. Second, coalesce null values to 0 (if you don't have null values, figure out how to rearrange your query so you do.) Third, `SET current_quantity = (...your select statement...)`, remembering that WHERE can only accommodate one column. 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. +# Assignment 2: Design a Logical Model and Advanced SQL + +🚨 **Please review our [Assignment Submission Guide](https://github.com/UofT-DSI/onboarding/blob/main/onboarding_documents/submissions.md)** 🚨 for detailed instructions on how to format, branch, and submit your work. Following these guidelines is crucial for your submissions to be evaluated correctly. + +#### Submission Parameters: +* Submission Due Date: `August 17, 2025` +* Weight: 70% of total grade +* The branch name for your repo should be: `assignment-two` +* What to submit for this assignment: + * This markdown (Assignment2.md) with written responses in Section 1 + * Two Entity-Relationship Diagrams (preferably in a pdf, jpeg, png format). + * One .sql file +* What the pull request link should look like for this assignment: `https://github.com//sql/pulls/` + * Open a private window in your browser. Copy and paste the link to your pull request into the address bar. Make sure you can see your pull request properly. This helps the technical facilitator and learning support staff review your submission easily. + +Checklist: +- [ ] Create a branch called `assignment-two`. +- [ ] Ensure that the repository is public. +- [ ] Review [the PR description guidelines](https://github.com/UofT-DSI/onboarding/blob/main/onboarding_documents/submissions.md#guidelines-for-pull-request-descriptions) and adhere to them. +- [ ] Verify that the link is accessible in a private browser window. + +If you encounter any difficulties or have questions, please don't hesitate to reach out to our team via our Slack at `#cohort-6-help`. Our Technical Facilitators and Learning Support staff are here to help you navigate any challenges. + +*** + +## Section 1: +You can start this section following *session 1*, but you may want to wait until you feel comfortable wtih basic SQL query writing. + +Steps to complete this part of the assignment: +- Design a logical data model +- Duplicate the logical data model and add another table to it following the instructions +- Write, within this markdown file, an answer to Prompt 3 + + +### Design a Logical Model + +#### Prompt 1 +Design a logical model for a small bookstore. 📚 + +At the minimum it should have employee, order, sales, customer, and book entities (tables). Determine sensible column and table design based on what you know about these concepts. Keep it simple, but work out sensible relationships to keep tables reasonably sized. + +Additionally, include a date table. + +There are several tools online you can use, I'd recommend [Draw.io](https://www.drawio.com/) or [LucidChart](https://www.lucidchart.com/pages/). + +**HINT:** You do not need to create any data for this prompt. This is a logical model (ERD) only. + +#### Prompt 2 +We want to create employee shifts, splitting up the day into morning and evening. Add this to the ERD. + +#### Prompt 3 +The store wants to keep customer addresses. Propose two architectures for the CUSTOMER_ADDRESS table, one that will retain changes, and another that will overwrite. Which is type 1, which is type 2? + +**HINT:** search type 1 vs type 2 slowly changing dimensions. + +``` +Your answer... +-- keep customer addresses. Proposal 1 - retain changes (type 2) + +-- Behavior: Each address change creates a new row. Historical addresses are preserved with effective / end dates or a current flag. +-- Use when you must audit past addresses or track analysis by historical address. +-- Example schema (multiple rows per customer; surrogate pk): + +CREATE TABLE customer_address_type2 ( + address_sk BIGINT PRIMARY KEY AUTOINCREMENT, + customer_id INT, + street VARCHAR(200), + city VARCHAR(100), + state VARCHAR(50), + postal_code VARCHAR(20), + country VARCHAR(50), + effective_from DATE NOT NULL, + effective_to DATE, + is_current BOOLEAN DEFAULT 1, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- keep customer addresses. Proposal 1 - overwrite changes (type 1) + +-- Behavior: New address values replace the old values in-place. No history is kept. +-- Use when you only care about the current address. + +CREATE TABLE customer_address_type1 ( + customer_id INT PRIMARY KEY, + street VARCHAR(200), + city VARCHAR(100), + state VARCHAR(50), + postal_code VARCHAR(20), + country VARCHAR(50), + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +``` + +*** + +## Section 2: +You can start this section following *session 4*. + +Steps to complete this part of the assignment: +- Open the assignment2.sql file in DB Browser for SQLite: + - from [Github](./02_activities/assignments/assignment2.sql) + - or, from your local forked repository +- Complete each question + + +### Write SQL + +#### COALESCE +1. Our favourite manager wants a detailed long list of products, but is afraid of tables! We tell them, no problem! We can produce a list with all of the appropriate details. + +Using the following syntax you create our super cool and not at all needy manager a list: +``` +SELECT +product_name || ', ' || product_size|| ' (' || product_qty_type || ')' +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 nulls, and 'unit' for the second column with nulls. + +**HINT**: keep the syntax the same, but edited the correct components with the string. 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. + +
-
+ +#### Windowed Functions +1. Write a query that selects from the customer_purchases table and numbers each customer’s visits to the farmer’s market (labeling each market date with a different number). Each customer’s first visit is labeled 1, second visit is labeled 2, etc. + +You can either display all rows in the customer_purchases table, with the counter changing on each new market date for each customer, or select only the unique market dates per customer (without purchase details) and number those visits. + +**HINT**: One of these approaches uses ROW_NUMBER() and one uses DENSE_RANK(). + +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. + +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. + +
-
+ +#### String manipulations +1. Some product names in the product table have descriptions like "Jar" or "Organic". These are separated from the product name with a hyphen. Create a column using SUBSTR (and a couple of other commands) that captures these, but is otherwise NULL. Remove any trailing or leading whitespaces. Don't just use a case statement for each product! + +| product_name | description | +|----------------------------|-------------| +| Habanero Peppers - Organic | Organic | + +**HINT**: you might need to use INSTR(product_name,'-') to find the hyphens. INSTR will help split the column. + +
-
+ +#### UNION +1. Using a UNION, write a query that displays the market dates with the highest and lowest total sales. + +**HINT**: There are a possibly a few ways to do this query, but if you're struggling, try the following: 1) Create a CTE/Temp Table to find sales values grouped dates; 2) Create another CTE/Temp table with a rank windowed function on the previous query to create "best day" and "worst day"; 3) Query the second temp table twice, once for the best day, once for the worst day, with a UNION binding them. + +*** + +## Section 3: +You can start this section following *session 5*. + +Steps to complete this part of the assignment: +- Open the assignment2.sql file in DB Browser for SQLite: + - from [Github](./02_activities/assignments/assignment2.sql) + - or, from your local forked repository +- Complete each question + +### Write SQL + +#### Cross Join +1. Suppose every vendor in the `vendor_inventory` table had 5 of each of their products to sell to **every** customer on record. How much money would each vendor make per product? Show this by vendor_name and product name, rather than using the IDs. + +**HINT**: Be sure you select only relevant columns and rows. Remember, CROSS JOIN will explode your table rows, so CROSS JOIN should likely be a subquery. Think a bit about the row counts: how many distinct vendors, product names are there (x)? How many customers are there (y). Before your final group by you should have the product of those two queries (x\*y). + +
-
+ +#### INSERT +1. Create a new table "product_units". 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`. + +2. Using `INSERT`, add a new row to the product_unit table (with an updated timestamp). This can be any product you desire (e.g. add another record for Apple Pie). + +
-
+ +#### 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](https://imgflip.com/i/8iq872). + +
-
+ +#### UPDATE +1. We want to add the current_quantity to the product_units table. First, add a new column, `current_quantity` to the table using the following syntax. +``` +ALTER TABLE product_units +ADD current_quantity INT; +``` + +Then, using `UPDATE`, change the current_quantity equal to the **last** `quantity` value from the vendor_inventory details. + +**HINT**: This one is pretty hard. First, determine how to get the "last" quantity per product. Second, coalesce null values to 0 (if you don't have null values, figure out how to rearrange your query so you do.) Third, `SET current_quantity = (...your select statement...)`, remembering that WHERE can only accommodate one column. 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. diff --git a/02_activities/assignments/Bookstore Shifts.png b/02_activities/assignments/Bookstore Shifts.png new file mode 100644 index 0000000000000000000000000000000000000000..7569cf14a4f88862004fd28d117a5657d441f0f4 GIT binary patch literal 76786 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

-U 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 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 -product_name, -CASE - WHEN INSTR(product_name, '-') > 0 - THEN TRIM(SUBSTR(product_name, INSTR(product_name, '-') + 1)) - ELSE NULL - END AS description, product_size -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. - -HINT: There are a possibly a few ways to do this query, but if you're struggling, try the following: -1) Create a CTE/Temp Table to find sales values grouped dates; -2) Create another CTE/Temp table with a rank windowed function on the previous query to create -"best day" and "worst day"; -3) Query the second temp table twice, once for the best day, once for the worst day, -with a UNION binding them. */ - -WITH SalesByDate AS ( - SELECT - market_date, - SUM(quantity * cost_to_customer_per_qty) AS total_sales - FROM customer_purchases - GROUP BY market_date), - -RankedSales AS ( - SELECT - market_date, - total_sales, - RANK() OVER (ORDER BY total_sales DESC) AS rank_highest, - RANK() OVER (ORDER BY total_sales ASC) AS rank_lowest - FROM SalesByDate) - -SELECT -market_date, -total_sales, -'Best Day' AS description -FROM RankedSales -WHERE rank_highest = 1 - -UNION - -SELECT -market_date, -total_sales, -'Worst Day' AS description -FROM RankedSales -WHERE rank_lowest = 1; - - -/* SECTION 3 */ - --- Cross Join -/*1. Suppose every vendor in the `vendor_inventory` table had 5 of each of their products to sell to **every** -customer on record. How much money would each vendor make per product? -Show this by vendor_name and product name, rather than using the IDs. - -HINT: Be sure you select only relevant columns and rows. -Remember, CROSS JOIN will explode your table rows, so CROSS JOIN should likely be a subquery. -Think a bit about the row counts: how many distinct vendors, product names are there (x)? -How many customers are there (y). -Before your final group by you should have the product of those two queries (x*y). */ - -WITH VendorProducts AS ( - SELECT - v.vendor_name, - vi.product_id, - vi.original_price, -p.product_name - FROM vendor_inventory vi - JOIN vendor v ON v.vendor_id = vi.vendor_id -JOIN product p ON vi.product_id = p.product_id), - -AllCustomers AS ( - SELECT customer_id - FROM customer_purchases - GROUP BY customer_id) - -SELECT - vp.vendor_name, - vp.product_name, - COUNT(ac.customer_id) * 5 * vp.original_price AS total_sales_per_product -FROM VendorProducts vp -CROSS JOIN AllCustomers ac -GROUP BY vp.vendor_name, vp.product_name, vp.original_price; - - --- INSERT -/*1. Create a new table "product_units". -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`. */ - -DROP TABLE IF EXISTS product_units; - -CREATE TABLE product_units AS -SELECT - product_id, - product_name, - product_size, - product_category_id, - product_qty_type, - CURRENT_TIMESTAMP AS snapshot_timestamp -FROM product -WHERE product_qty_type = 'unit'; - -/*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). */ - -INSERT INTO product_units ( - product_id, - product_name, - product_size, - product_category_id, - product_qty_type, - snapshot_timestamp -) -VALUES ( - 27, - 'Matcha latte', - '10 oz', - 3, - 'unit', - CURRENT_TIMESTAMP); - - --- 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 = 'Matcha latte' -AND snapshot_timestamp = ( - SELECT MIN(snapshot_timestamp) - FROM product_units - WHERE product_name = 'Matcha latte'); - --- UPDATE -/* 1.We want to add the current_quantity to the product_units table. -First, add a new column, current_quantity to the table using the following syntax. - -ALTER TABLE product_units -ADD current_quantity INT; - -Then, using UPDATE, change the current_quantity equal to the last quantity value from the vendor_inventory details. - -HINT: This one is pretty hard. -First, determine how to get the "last" quantity per product. -Second, coalesce null values to 0 (if you don't have null values, figure out how to rearrange your query so you do.) -Third, SET current_quantity = (...your select statement...), remembering that WHERE can only accommodate one column. -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. */ - -ALTER TABLE product_units -ADD current_quantity INT; - -WITH latest_quantities AS ( - SELECT - vi.product_id, - MAX(vi.market_date) AS latest_date - FROM vendor_inventory vi - GROUP BY vi.product_id -), -quantities_with_dates AS ( - SELECT - vi.product_id, - vi.quantity, - lq.latest_date - FROM vendor_inventory vi - INNER JOIN latest_quantities lq - ON vi.product_id = lq.product_id AND vi.market_date = lq.latest_date -) -UPDATE product_units -SET current_quantity = COALESCE( - (SELECT qwd.quantity - FROM quantities_with_dates qwd - WHERE qwd.product_id = product_units.product_id), 0); +/* ASSIGNMENT 2 */ +/* SECTION 2 */ + +-- COALESCE +/* 1. Our favourite manager wants a detailed long list of products, but is afraid of tables! +We tell them, no problem! We can produce a list with all of the appropriate details. + +Using the following syntax you create our super cool and not at all needy manager a list: + +SELECT +product_name || ', ' || product_size|| ' (' || product_qty_type || ')' +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 problem, and 'unit' for the second problem. + +HINT: keep the syntax the same, but edited the correct components with the string. +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 +product_name || ', ' || coalesce(product_size, ' ')|| ' (' || coalesce(product_qty_type, 'unit') || ')' as "Detailed Product List" +FROM product; + +--Windowed Functions +/* 1. Write a query that selects from the customer_purchases table and numbers each customer’s +visits to the farmer’s market (labeling each market date with a different number). +Each customer’s first visit is labeled 1, second visit is labeled 2, etc. + +You can either display all rows in the customer_purchases table, with the counter changing on +each new market date for each customer, or select only the unique market dates per customer +(without purchase details) and number those visits. +HINT: One of these approaches uses ROW_NUMBER() and one uses DENSE_RANK(). */ + +SELECT +customer_id, +market_date, +ROW_NUMBER() 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 +customer_id, +market_date +FROM ( + SELECT + customer_id, + market_date, + ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY market_date DESC) AS visit_number + FROM customer_purchases) + recent_visits +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. */ + +SELECT +customer_id, +product_id, +market_date, +quantity, +COUNT(*) OVER (PARTITION BY customer_id, product_id) AS totalPurchases +FROM customer_purchases; + +-- String manipulations +/* 1. Some product names in the product table have descriptions like "Jar" or "Organic". +These are separated from the product name with a hyphen. +Create a column using SUBSTR (and a couple of other commands) that captures these, but is otherwise NULL. +Remove any trailing or leading whitespaces. Don't just use a case statement for each product! + +| product_name | description | +|----------------------------|-------------| +| Habanero Peppers - Organic | Organic | + +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 +product_name, +CASE + WHEN INSTR(product_name, '-') > 0 + THEN TRIM(SUBSTR(product_name, INSTR(product_name, '-') + 1)) + ELSE NULL + END AS description, product_size +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. + +HINT: There are a possibly a few ways to do this query, but if you're struggling, try the following: +1) Create a CTE/Temp Table to find sales values grouped dates; +2) Create another CTE/Temp table with a rank windowed function on the previous query to create +"best day" and "worst day"; +3) Query the second temp table twice, once for the best day, once for the worst day, +with a UNION binding them. */ + +WITH SalesByDate AS ( + SELECT + market_date, + SUM(quantity * cost_to_customer_per_qty) AS total_sales + FROM customer_purchases + GROUP BY market_date), + +RankedSales AS ( + SELECT + market_date, + total_sales, + RANK() OVER (ORDER BY total_sales DESC) AS rank_highest, + RANK() OVER (ORDER BY total_sales ASC) AS rank_lowest + FROM SalesByDate) + +SELECT +market_date, +total_sales, +'Best Day' AS description +FROM RankedSales +WHERE rank_highest = 1 + +UNION + +SELECT +market_date, +total_sales, +'Worst Day' AS description +FROM RankedSales +WHERE rank_lowest = 1; + + +/* SECTION 3 */ + +-- Cross Join +/*1. Suppose every vendor in the `vendor_inventory` table had 5 of each of their products to sell to **every** +customer on record. How much money would each vendor make per product? +Show this by vendor_name and product name, rather than using the IDs. + +HINT: Be sure you select only relevant columns and rows. +Remember, CROSS JOIN will explode your table rows, so CROSS JOIN should likely be a subquery. +Think a bit about the row counts: how many distinct vendors, product names are there (x)? +How many customers are there (y). +Before your final group by you should have the product of those two queries (x*y). */ + +WITH VendorProducts AS ( + SELECT + v.vendor_name, + vi.product_id, + vi.original_price, +p.product_name + FROM vendor_inventory vi + JOIN vendor v ON v.vendor_id = vi.vendor_id +JOIN product p ON vi.product_id = p.product_id), + +AllCustomers AS ( + SELECT customer_id + FROM customer_purchases + GROUP BY customer_id) + +SELECT + vp.vendor_name, + vp.product_name, + COUNT(ac.customer_id) * 5 * vp.original_price AS total_sales_per_product +FROM VendorProducts vp +CROSS JOIN AllCustomers ac +GROUP BY vp.vendor_name, vp.product_name, vp.original_price; + + +-- INSERT +/*1. Create a new table "product_units". +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`. */ + +DROP TABLE IF EXISTS product_units; + +CREATE TABLE product_units AS +SELECT + product_id, + product_name, + product_size, + product_category_id, + product_qty_type, + CURRENT_TIMESTAMP AS snapshot_timestamp +FROM product +WHERE product_qty_type = 'unit'; + +/*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). */ + +INSERT INTO product_units ( + product_id, + product_name, + product_size, + product_category_id, + product_qty_type, + snapshot_timestamp +) +VALUES ( + 27, + 'Matcha latte', + '10 oz', + 3, + 'unit', + CURRENT_TIMESTAMP); + + +-- 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 rowid IN ( + SELECT pu.rowid + FROM product_units pu + JOIN ( + SELECT MIN(snapshot_timestamp) AS min_snapshot + FROM product_units + WHERE product_name = 'Matcha latte' + ) sub ON pu.snapshot_timestamp = sub.min_snapshot + WHERE pu.product_name = 'Matcha latte' +); + +-- UPDATE +/* 1.We want to add the current_quantity to the product_units table. +First, add a new column, current_quantity to the table using the following syntax. + +ALTER TABLE product_units +ADD current_quantity INT; + +Then, using UPDATE, change the current_quantity equal to the last quantity value from the vendor_inventory details. + +HINT: This one is pretty hard. +First, determine how to get the "last" quantity per product. +Second, coalesce null values to 0 (if you don't have null values, figure out how to rearrange your query so you do.) +Third, SET current_quantity = (...your select statement...), remembering that WHERE can only accommodate one column. +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. */ + +ALTER TABLE product_units +ADD current_quantity INT; + +WITH latest_quantities AS ( + SELECT + vi.product_id, + MAX(vi.market_date) AS latest_date + FROM vendor_inventory vi + GROUP BY vi.product_id +), +quantities_with_dates AS ( + SELECT + vi.product_id, + vi.quantity, + lq.latest_date + FROM vendor_inventory vi + INNER JOIN latest_quantities lq + ON vi.product_id = lq.product_id AND vi.market_date = lq.latest_date +) +UPDATE product_units +SET current_quantity = COALESCE( + (SELECT qwd.quantity + FROM quantities_with_dates qwd + WHERE qwd.product_id = product_units.product_id), 0); diff --git a/02_activities/assignments/bookstore_ERD.drawio.png b/02_activities/assignments/bookstore_ERD.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4ff9ffcc11f52e3c20e82102b241f10fe63f5a GIT binary patch literal 159874 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