From c3cc17e5736109782a9382208b430f66de1e2c95 Mon Sep 17 00:00:00 2001 From: Zaid Roshan Mayers Date: Thu, 9 Jan 2025 19:35:42 -0500 Subject: [PATCH] Added solutions for Combine Two Tables, Customers With Strictly Increasing Purchases, Game Play Analysis 2, Game Play Analysis 3, and Shortest Distance In A Plane. --- CombineTwoTables.sql | 4 ++++ CustomersWithStrictlyIncreasingPurchases.sql | 18 ++++++++++++++++++ GamePlayAnalysis2.sql | 7 +++++++ GamePlayAnalysis3.sql | 3 +++ ShortestDistanceInAPlane.sql | 4 ++++ 5 files changed, 36 insertions(+) create mode 100644 CombineTwoTables.sql create mode 100644 CustomersWithStrictlyIncreasingPurchases.sql create mode 100644 GamePlayAnalysis2.sql create mode 100644 GamePlayAnalysis3.sql create mode 100644 ShortestDistanceInAPlane.sql diff --git a/CombineTwoTables.sql b/CombineTwoTables.sql new file mode 100644 index 0000000..ffce3d6 --- /dev/null +++ b/CombineTwoTables.sql @@ -0,0 +1,4 @@ +SELECT p.firstname, p.lastname, a.city, a.state +FROM person p +LEFT JOIN address a +ON p.personId = a.personId; diff --git a/CustomersWithStrictlyIncreasingPurchases.sql b/CustomersWithStrictlyIncreasingPurchases.sql new file mode 100644 index 0000000..e3e9fdb --- /dev/null +++ b/CustomersWithStrictlyIncreasingPurchases.sql @@ -0,0 +1,18 @@ +WITH CTE AS ( + SELECT customer_id, + YEAR(order_date) AS order_year, + SUM(price) AS total + FROM Orders + GROUP BY customer_id, YEAR(order_date) +), +Ranked AS ( + SELECT customer_id, + order_year, + ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_year) AS rank_year, + DENSE_RANK() OVER(PARTITION BY customer_id ORDER BY total) AS rank_total + FROM CTE +) +SELECT customer_id +FROM Ranked +GROUP BY customer_id +HAVING COUNT(CASE WHEN rank_year = rank_total THEN 1 END) = MAX(order_year) - MIN(order_year) + 1; diff --git a/GamePlayAnalysis2.sql b/GamePlayAnalysis2.sql new file mode 100644 index 0000000..87dc250 --- /dev/null +++ b/GamePlayAnalysis2.sql @@ -0,0 +1,7 @@ +SELECT a.player_id, a.device_id +FROM ( + SELECT b.player_id, b.device_id, b.event_date, + RANK() OVER(PARTITION BY b.player_id ORDER BY b.event_date) AS 'rnk' + FROM Activity b +) a +WHERE a.rnk = 1; diff --git a/GamePlayAnalysis3.sql b/GamePlayAnalysis3.sql new file mode 100644 index 0000000..d3fc93f --- /dev/null +++ b/GamePlayAnalysis3.sql @@ -0,0 +1,3 @@ +SELECT player_id, event_date, + SUM(games_played) OVER(PARTITION BY player_id ORDER BY event_date) AS 'games_played_so_far' +FROM Activity; \ No newline at end of file diff --git a/ShortestDistanceInAPlane.sql b/ShortestDistanceInAPlane.sql new file mode 100644 index 0000000..5aa7e96 --- /dev/null +++ b/ShortestDistanceInAPlane.sql @@ -0,0 +1,4 @@ +SELECT ROUND(SQRT(MIN(POW(p2.x - p1.x, 2) + POW(p2.y - p1.y, 2))), 2) AS 'shortest' +FROM Point2D p1 +JOIN Point2D p2 +ON NOT (p1.x = p2.x AND p1.y = p2.y);