From b1f14732930ae28517d20742b14504422359c9b2 Mon Sep 17 00:00:00 2001 From: Arushi Bhambri Date: Mon, 21 Jul 2025 15:28:24 -0700 Subject: [PATCH] Added fresh solutions for Mock-SQL-3 --- Market_Analysis_II.sql | 43 ++++++++++++++++++++++++++++++++++++ Tournament_winners.sql | 49 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 Market_Analysis_II.sql create mode 100644 Tournament_winners.sql diff --git a/Market_Analysis_II.sql b/Market_Analysis_II.sql new file mode 100644 index 0000000..0af5022 --- /dev/null +++ b/Market_Analysis_II.sql @@ -0,0 +1,43 @@ +# Write your MySQL query statement below +with users_fav_brand as +( + select + u.user_id + , i.item_id as fav_brand_id + from + Users u left join Items i on u.favorite_brand = i.item_brand +) +, ranked_orders as +( + select + seller_id + , item_id + , order_date + , rank() over(partition by seller_id order by order_date) as rnk + from + Orders +) +, second_orders as +( + select + seller_id + , item_id + from + ranked_orders + where rnk = 2 +) +, combinations_match as +( +select + u.user_id + , u.fav_brand_id + , s.item_id +from + users_fav_brand u left join second_orders s on u.user_id = s.seller_id +where u.fav_brand_id = s.item_id +) +select + u.user_id as seller_id + , coalesce(case when c.fav_brand_id = c.item_id then 'yes' else null end, 'no') as 2nd_item_fav_brand +from + Users u left join combinations_match c on u.user_id = c.user_id \ No newline at end of file diff --git a/Tournament_winners.sql b/Tournament_winners.sql new file mode 100644 index 0000000..c283409 --- /dev/null +++ b/Tournament_winners.sql @@ -0,0 +1,49 @@ +with master_table as +( + select + first_player as player + , first_score as score + from + Matches + union all + select + second_player as player + , second_score as score + from + Matches +) +, player_score_count as +( + select + player + , sum(score) as total_score + from + master_table + group by 1 +) +, player_group_total as +( +select + pc.player as player_id + , pc.total_score + , p.group_id +from + player_score_count pc join Players p on pc.player = p.player_id +) +, player_group_ranking as +( + select + player_id + , group_id + , row_number() over(partition by group_id order by total_score desc, player_id asc) as rownum + from + player_group_total +) + +select + player_id + , group_id +from + player_group_ranking +where + rownum = 1 \ No newline at end of file