diff --git a/MarketAnalysis2.sql b/MarketAnalysis2.sql new file mode 100644 index 0000000..cda0448 --- /dev/null +++ b/MarketAnalysis2.sql @@ -0,0 +1,54 @@ +WITH RankedSales AS ( + SELECT + o.seller_id, + o.order_date, + i.item_brand, + ROW_NUMBER() OVER (PARTITION BY o.seller_id ORDER BY o.order_date) AS sale_rank + FROM Orders o + JOIN Items i ON o.item_id = i.item_id +), +SecondSales AS ( + SELECT + rs.seller_id, + rs.item_brand + FROM RankedSales rs + WHERE rs.sale_rank = 2 +) +SELECT + u.user_id AS seller_id, + CASE + WHEN ss.item_brand = u.favorite_brand THEN 'yes' + ELSE 'no' + END AS 2nd_item_fav_brand +FROM Users u +LEFT JOIN SecondSales ss ON u.user_id = ss.seller_id; +PRINT 'Ranked Sales CTE started'; +WITH RankedSales AS ( + SELECT + o.seller_id, + o.order_date, + i.item_brand, + ROW_NUMBER() OVER (PARTITION BY o.seller_id ORDER BY o.order_date) AS sale_rank + FROM Orders o + JOIN Items i ON o.item_id = i.item_id +) +PRINT 'Ranked Sales CTE completed'; +PRINT 'Second Sales CTE started'; +SecondSales AS ( + SELECT + rs.seller_id, + rs.item_brand + FROM RankedSales rs + WHERE rs.sale_rank = 2 +) +PRINT 'Second Sales CTE completed'; +PRINT 'Final query started'; +SELECT + u.user_id AS seller_id, + CASE + WHEN ss.item_brand = u.favorite_brand THEN 'yes' + ELSE 'no' + END AS 2nd_item_fav_brand +FROM Users u +LEFT JOIN SecondSales ss ON u.user_id = ss.seller_id; +PRINT 'Final query completed'; \ No newline at end of file diff --git a/TournamentWinners.sql b/TournamentWinners.sql new file mode 100644 index 0000000..7dec5fd --- /dev/null +++ b/TournamentWinners.sql @@ -0,0 +1,44 @@ +WITH PlayerScores AS ( + SELECT + first_player AS player_id, + SUM(first_score) AS total_score + FROM Matches + GROUP BY first_player + + UNION ALL + + SELECT + second_player AS player_id, + SUM(second_score) AS total_score + FROM Matches + GROUP BY second_player +), +TotalScores AS ( + SELECT + p.group_id, + ps.player_id, + SUM(ps.total_score) AS group_score + FROM PlayerScores ps + JOIN Players p + ON ps.player_id = p.player_id + GROUP BY p.group_id, ps.player_id +), +MaxScores AS ( + SELECT + group_id, + MAX(group_score) AS max_score + FROM TotalScores + GROUP BY group_id +) +SELECT + ts.group_id, + ts.player_id +FROM TotalScores ts +JOIN MaxScores ms +ON ts.group_id = ms.group_id AND ts.group_score = ms.max_score +WHERE ts.player_id = ( + SELECT MIN(player_id) + FROM TotalScores ts2 + WHERE ts2.group_id = ts.group_id AND ts2.group_score = ts.group_score +) +ORDER BY ts.group_id;