From e2f7001b7e750b40108841277518f55c47699a98 Mon Sep 17 00:00:00 2001 From: Stephanie Lin Date: Thu, 26 Oct 2023 03:42:32 -0400 Subject: [PATCH 1/6] Create answers.sql --- sql-assessment/answers.sql | 116 +++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 sql-assessment/answers.sql diff --git a/sql-assessment/answers.sql b/sql-assessment/answers.sql new file mode 100644 index 0000000..dd7470a --- /dev/null +++ b/sql-assessment/answers.sql @@ -0,0 +1,116 @@ +-- Q1 +SELECT + date, + SUM(impressions) AS total_impressions +FROM + `pmg-sql-assessment.datasets.marketing_performance` +GROUP BY + date +ORDER BY + date; + +-- Q2 +WITH StateRevenue AS ( + SELECT + state, + SUM(revenue) AS total_revenue + FROM + `pmg-sql-assessment.datasets.website_revenue` + GROUP BY + state +) + +SELECT + state, + total_revenue +FROM + StateRevenue +ORDER BY + total_revenue DESC +LIMIT 3 +OFFSET 2; + +-- Q3 +WITH CampaignSummary AS ( + SELECT + ci.name AS campaign_name, + mp.campaign_id, + ROUND(SUM(mp.cost), 2) AS total_cost, + SUM(mp.impressions) AS total_impressions, + SUM(mp.clicks) AS total_clicks, + SUM(wr.revenue) AS total_revenue + FROM + `pmg-sql-assessment.datasets.campaign_info` AS ci + LEFT JOIN + `pmg-sql-assessment.datasets.marketing_performance` AS mp + ON + ci.id = mp.campaign_id + LEFT JOIN + `pmg-sql-assessment.datasets.website_revenue` AS wr + ON + ci.id = wr.campaign_id + GROUP BY + campaign_name, campaign_id +) + +SELECT + campaign_name, + total_cost, + total_impressions, + total_clicks, + total_revenue +FROM + CampaignSummary; + + +-- Q4 +SELECT + mp.geo AS state, + SUM(mp.conversions) AS total_conversions +FROM + `pmg-sql-assessment.datasets.marketing_performance` AS mp +JOIN + `pmg-sql-assessment.datasets.campaign_info` AS ci +ON + mp.campaign_id = ci.id +WHERE + ci.name = 'Campaign5' +GROUP BY + state +ORDER BY + total_conversions DESC; + + +-- Q5 +-- The campaign that was the most efficient would be Campaign 3 because although it is the most costly, it generates the most number of total clicks and total impression resulting in the most revenue compared to the other 4 campaigns. + +-- Bonus +WITH DayOfWeekMetrics AS ( + SELECT + EXTRACT(DAYOFWEEK FROM date) AS day_of_week, + SUM(clicks) AS total_clicks, + SUM(impressions) AS total_impressions + FROM + `pmg-sql-assessment.datasets.marketing_performance` + GROUP BY + day_of_week +) + +SELECT + CASE + WHEN day_of_week = 1 THEN 'Sunday' + WHEN day_of_week = 2 THEN 'Monday' + WHEN day_of_week = 3 THEN 'Tuesday' + WHEN day_of_week = 4 THEN 'Wednesday' + WHEN day_of_week = 5 THEN 'Thursday' + WHEN day_of_week = 6 THEN 'Friday' + WHEN day_of_week = 7 THEN 'Saturday' + ELSE 'Unknown' + END AS day_of_week, + ROUND(AVG(total_clicks / total_impressions), 3) AS avg_ctr +FROM + DayOfWeekMetrics +GROUP BY + day_of_week +ORDER BY + avg_ctr DESC; From 05599bbf17bd3bc4bb5fbf9528666f93a242240d Mon Sep 17 00:00:00 2001 From: Stephanie Lin Date: Thu, 26 Oct 2023 03:57:32 -0400 Subject: [PATCH 2/6] Update answers.sql --- sql-assessment/answers.sql | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/sql-assessment/answers.sql b/sql-assessment/answers.sql index dd7470a..2cb5190 100644 --- a/sql-assessment/answers.sql +++ b/sql-assessment/answers.sql @@ -82,7 +82,34 @@ ORDER BY -- Q5 --- The campaign that was the most efficient would be Campaign 3 because although it is the most costly, it generates the most number of total clicks and total impression resulting in the most revenue compared to the other 4 campaigns. +WITH CampaignMetrics AS ( + SELECT + ci.name AS campaign_name, + SUM(mp.conversions) AS total_conversions, + SUM(mp.cost) AS total_cost + FROM + `pmg-sql-assessment.datasets.campaign_info` AS ci + LEFT JOIN + `pmg-sql-assessment.datasets.marketing_performance` AS mp + ON + ci.id = mp.campaign_id + GROUP BY + campaign_name +) + +SELECT + campaign_name, + SUM(total_conversions) AS total_conversions, + SUM(total_cost) AS total_cost, + SUM(total_conversions) / SUM(total_cost) AS roas +FROM + CampaignMetrics +GROUP BY + campaign_name +ORDER BY + roas DESC; + +-- Looking at efficiency of marketing campaigns, we can look at return on ad spend (ROAS). This calculates the revenue generated per unit of advertising. Looking at the results, Campaign 4 has the highest ROAS of about 2.34 compared to the other four campaigns. -- Bonus WITH DayOfWeekMetrics AS ( From eda373152a612448d94dd91352e7d509f38887d1 Mon Sep 17 00:00:00 2001 From: Stephanie Lin Date: Thu, 26 Oct 2023 04:01:26 -0400 Subject: [PATCH 3/6] updated answers --- sql-assessment/{answers.sql => updated-answers.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sql-assessment/{answers.sql => updated-answers.sql} (100%) diff --git a/sql-assessment/answers.sql b/sql-assessment/updated-answers.sql similarity index 100% rename from sql-assessment/answers.sql rename to sql-assessment/updated-answers.sql From 90b803191f2b3c607968f65b7474f47b00e5338d Mon Sep 17 00:00:00 2001 From: Stephanie Lin Date: Thu, 26 Oct 2023 04:07:37 -0400 Subject: [PATCH 4/6] final --- sql-assessment/{updated-answers.sql => answers.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sql-assessment/{updated-answers.sql => answers.sql} (100%) diff --git a/sql-assessment/updated-answers.sql b/sql-assessment/answers.sql similarity index 100% rename from sql-assessment/updated-answers.sql rename to sql-assessment/answers.sql From 198c3df34ae2198eede211b565d14223af77ce08 Mon Sep 17 00:00:00 2001 From: Stephanie Lin Date: Thu, 26 Oct 2023 12:44:55 -0400 Subject: [PATCH 5/6] Update answers.sql --- sql-assessment/answers.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sql-assessment/answers.sql b/sql-assessment/answers.sql index 2cb5190..5edcfd8 100644 --- a/sql-assessment/answers.sql +++ b/sql-assessment/answers.sql @@ -30,6 +30,8 @@ ORDER BY LIMIT 3 OFFSET 2; +-- The third best state (OH) generated $37577 in revenue. + -- Q3 WITH CampaignSummary AS ( SELECT @@ -80,6 +82,7 @@ GROUP BY ORDER BY total_conversions DESC; +-- Georgia generated the most conversions with a total of 672. -- Q5 WITH CampaignMetrics AS ( From 975862d47d560286eb4cb0f3a8bcbcb9bd86ad75 Mon Sep 17 00:00:00 2001 From: Stephanie Lin Date: Thu, 26 Oct 2023 13:01:42 -0400 Subject: [PATCH 6/6] Update answers.sql --- sql-assessment/answers.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql-assessment/answers.sql b/sql-assessment/answers.sql index 5edcfd8..6e37e17 100644 --- a/sql-assessment/answers.sql +++ b/sql-assessment/answers.sql @@ -144,3 +144,5 @@ GROUP BY day_of_week ORDER BY avg_ctr DESC; + +-- The best day of the week to run ads would be Wednesday with the highest average click through rate of about 1.098.