From c5d9a3b387511434713763c401dfff66e08ff569 Mon Sep 17 00:00:00 2001 From: Syed Ali Date: Thu, 1 May 2025 00:49:12 -0400 Subject: [PATCH] SQL Assignment 2 Completed! --- .../assignments/Assignment2_Prompt3.txt | 1 + .../assignments/Assignment2_section1.png | Bin 0 -> 81695 bytes 02_activities/assignments/assignment2.sql | 154 ++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 02_activities/assignments/Assignment2_Prompt3.txt create mode 100644 02_activities/assignments/Assignment2_section1.png diff --git a/02_activities/assignments/Assignment2_Prompt3.txt b/02_activities/assignments/Assignment2_Prompt3.txt new file mode 100644 index 000000000..49a77ba14 --- /dev/null +++ b/02_activities/assignments/Assignment2_Prompt3.txt @@ -0,0 +1 @@ +As per the slowly changing Dimensions (SCD), out of these two proposed architectures for the CUSTOMER_ADDRESS table, the architecture that overwrites and stores only the latest data is the type 1 SCD. On the other hand, the architecture that retains changes is the type 2 SCD. \ No newline at end of file diff --git a/02_activities/assignments/Assignment2_section1.png b/02_activities/assignments/Assignment2_section1.png new file mode 100644 index 0000000000000000000000000000000000000000..14b3652f6744fe1e44506e0475ea08145d79fe5a GIT binary patch literal 81695 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

haeB@V>FeazE{1$II0H$lL6}Q zNC%MX@p9VHxd8IaTa32C(B_S`i(VK8Jdus%aiTq>d9pWogs=8ZC-pLrpalGNG9Um4 z7mi0$P0b~CgJ&&ZYOD)9lUx19GBjXHWCOx)e0Gm1{W`qcuXpp@-_G^tHB`)K@K$ZOrZ@_{ zU@cFVH+e*8uUy{~T;8*e{vbX|0k2PsbI*P2!L`XljA{hTW%$Vj0Y_i3#$g#>%|%DJsY~sFey*Q}-hbZ;UMNj`vNCWwnPd(cv^b1(g_GSRjA* z_VyxPUqnCmP$)D=sv`BE_!r9a-5Z`fi5t{)4ks@-i!zsrl3>^z-fvpG< zB_-roW_@`BWi`Wn=q>?r+%bS~5fnO9b#E6IMx+SBE1)AaWlnEyZYGR_&dhS`LOTSU+Q7g-&+_QS?L?l*lU)g|?s0%BqEkV;ETSp2vB_vA zTH-(5#pKzf*X>`yrCC`d9d}4~af~qwXQW2JU;L#_0Flj-($cicpiGz;fS_)f}3FnZ0TYZF`U!fq}V@W`c7+WDyQ!7sQ2kc z{)qX{`?;6S&;pHOWfkav*Egs}(_}u!Hcq7@GH4y0WquW;kre5!Dgcxn32_Y5{LD-i zNIL21U0|l29}geDxTke!Xb3cDZOfUD0u;76**$6W#ZzEdr+kK#j$Ushz$SY0w+1Y(C&7lx(_4W15gU&6RdK#FU-qGU4 zCyVi=tmq7e1cFDo2)$vd!JbJYrvm`p9poO`-P+T|PR4<}rDRli8S8w7fZZwKo~I!_=g_c+(Xdcy|& zRgI9}p|(PiB|P~;kQ+bXV8O+N_;{>oDLD%WyfzQ+*}K=$-26(jX8h9sI#6zIZn*K& zRaB;4?uLnQ$b7^yx)c$CyTuy(q541_Ew0i3Ql0~C@{5x%`f$-w)({R~zZ84Bp0640 zDQcqeGHg)*$9YHB|7tN-?ltn`TV(8-I=2S)5M9@8V&G(78Vv*7Nnc5h{uEX zaHlZ%vTl}~?tW)Z1T^!yz=i_HTd1dp>>{kew7gn*j=h9l4ieww+> zh~WB;&%Z#6LcECt~nR%90pNFfyf#LYy}(tZ`xA&xn*?q1_jlI^=lT>*KGd$0O;_P@SbuP@!1Y2 zvgwL!sMWwReR}iX{b^ld1U@_;M;c+>hIZ|%#w8^se+%XkUHVtF%RQZN%yW5x_Qd^s zcs58G;8FTOZtr#Sy|p)iU09XQ)YKGVLdD~@Hbc&MTU%Rb{Xwc&EIuD8LW~wO$amr> zvcLMzTX#cvGh)p~Y(5T`tmZ&rVId9Gc0fayG`f+xjhx;;@*FmI*cGIFxAHTm1xyD8 z{6f8}t1Fp|D)#zoK=ra7Hnm+8^hTRlcm=NAa=H@T0TuMsORl4m+dcVncNK`wKMsCv zD_py79e%ExG2E!bv&R;^|78$|OT1TL5N6ZGocf!9oI+F19_o1LxLWv&x4ocVFa$bOR|vwJM%=DhS!KK;$xnzfQtDqx#T#Ws27ol8`ToD=I3ITo9V( z7N-^!1zAL)quCO@MiQ@F^dqz{*ZJ^!KV@WOEV;W6BWVRp6Uwju#&%QaULGDE1e`{I zrDB|2Sa=+!e!7PKy@~2+lsGN&7U&4xM4%IV{zUFBK8xhsTl^!Ov=HIrAP>m#xFzI` r@X?Y}?J!4MPG9~1BgmTk&#Z;SDA=JZ!hC#6zL#4!Z{L(_=N0w`2KgBi literal 0 HcmV?d00001 diff --git a/02_activities/assignments/assignment2.sql b/02_activities/assignments/assignment2.sql index 5ad40748a..e84167c3c 100644 --- a/02_activities/assignments/assignment2.sql +++ b/02_activities/assignments/assignment2.sql @@ -21,6 +21,9 @@ Edit the appropriate columns -- you're making two edits -- and the NULL rows wil All the other rows will remain the same.) */ +SELECT +product_name || ', ' || coalesce(product_size, '') || ' (' || coalesce(product_qty_type, 'unit') || ')' +FROM product; --Windowed Functions /* 1. Write a query that selects from the customer_purchases table and numbers each customer’s @@ -32,18 +35,44 @@ each new market date for each customer, or select only the unique market dates p (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 ASC) AS customer_visits +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 * +FROM +( + SELECT + customer_id, + market_date, + + ROW_NUMBER()OVER(PARTITION BY customer_id ORDER BY market_date DESC) AS customer_visits + + FROM customer_purchases +)x +WHERE x.customer_visits = 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, +market_date, +product_id, +transaction_time, + + COUNT(*)OVER(PARTITION BY customer_id, product_id ORDER BY market_date DESC) AS [purchases] +FROM customer_purchases; -- String manipulations /* 1. Some product names in the product table have descriptions like "Jar" or "Organic". @@ -57,11 +86,27 @@ 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. */ +SELECT +product_name, +CASE + WHEN INSTR(product_name, '-') + 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, +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. @@ -73,6 +118,50 @@ HINT: There are a possibly a few ways to do this query, but if you're struggling 3) Query the second temp table twice, once for the best day, once for the worst day, with a UNION binding them. */ +DROP TABLE IF EXISTS temp.sales_value; +CREATE TABLE temp.sales_value AS + +SELECT +market_date, +SUM(quantity*cost_to_customer_per_qty)as sales + +FROM customer_purchases + +GROUP BY market_date; +--SELECT * FROM temp.sales_value + + + +DROP TABLE IF EXISTS temp.sales_rank; +CREATE TABLE temp.sales_rank AS + +SELECT +market_date, +sales, + RANK() OVER (ORDER BY sales DESC) AS best_day, + RANK() OVER (ORDER BY sales ASC) AS worst_day + +FROM temp.sales_value; +--SELECT * from temp.sales_rank + + +SELECT +market_date, +sales, +'Highest Sales Day' as day_type + +FROM temp.sales_rank +WHERE best_day = 1 + +UNION + +SELECT +market_date, +sales, +'Lowest Sales Day' as day_type + +FROM temp.sales_rank +WHERE worst_day = 1; @@ -89,6 +178,32 @@ Think a bit about the row counts: how many distinct vendors, product names are t How many customers are there (y). Before your final group by you should have the product of those two queries (x*y). */ +SELECT +vendor_name, +product_name, +SUM(5 * original_price) AS total_money + +FROM ( + SELECT + vendor.vendor_id, + product_id, + original_price, + vendor_name + FROM vendor_inventory + INNER JOIN vendor + ON vendor_inventory.vendor_id = vendor.vendor_id +) x + +CROSS JOIN ( + SELECT + customer_id + FROM customer +) y + +INNER JOIN product + ON x.product_id = product.product_id + +GROUP BY vendor_name, product_name; -- INSERT @@ -97,11 +212,30 @@ 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 temp.product_units; + +CREATE TEMP TABLE temp.product_units AS +SELECT *, +CURRENT_TIMESTAMP AS snapshot_timestamp + +FROM product +WHERE 1 = 0; + +INSERT INTO product_units +SELECT *, +CURRENT_TIMESTAMP AS snapshot_timestamp + +FROM product +WHERE product_qty_type = 'unit'; + +SELECT * FROM product_units /*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 +VALUES(24,'Apple Vinegar','1 ltr','2','unit',CURRENT_TIMESTAMP); -- DELETE @@ -109,6 +243,16 @@ 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.*/ +DELETE FROM product_units +WHERE product_name = 'Apple Vinegar' +AND snapshot_timestamp IN +( +SELECT MIN (snapshot_timestamp) +FROM product_units +WHERE product_name = 'Apple Vinegar' +); + +SELECT * FROM product_units WHERE product_name = 'Apple Vinegar' -- UPDATE @@ -129,5 +273,15 @@ Finally, make sure you have a WHERE statement to update the right row, When you have all of these components, you can run the update statement. */ +ALTER TABLE product_units +ADD current_quantity INT; +UPDATE product_units +SET current_quantity = COALESCE(( + SELECT quantity + FROM vendor_inventory + WHERE vendor_inventory.product_id = product_units.product_id + ORDER BY market_date DESC +), 0) +select * from product_units \ No newline at end of file