diff --git a/Average_Salary_Department_vs_Company.sql b/Average_Salary_Department_vs_Company.sql new file mode 100644 index 0000000..1d3aa2a --- /dev/null +++ b/Average_Salary_Department_vs_Company.sql @@ -0,0 +1,33 @@ +SELECT + ds.pay_month, + ds.department_id, + CASE + WHEN ds.department_avg > cs.company_avg THEN 'higher' + WHEN ds.department_avg < cs.company_avg THEN 'lower' + ELSE 'same' + END AS comparison +FROM ( + -- Calculate average salary per department per month + SELECT + e.department_id, + DATE_FORMAT(s.pay_date, '%Y-%m') AS pay_month, + AVG(s.amount) AS department_avg + FROM + salary s + JOIN + employee e ON s.employee_id = e.employee_id + GROUP BY + e.department_id, DATE_FORMAT(s.pay_date, '%Y-%m') +) AS ds +JOIN ( + -- Calculate company-wide average salary per month + SELECT + DATE_FORMAT(pay_date, '%Y-%m') AS pay_month, + AVG(amount) AS company_avg + FROM + salary + GROUP BY + DATE_FORMAT(pay_date, '%Y-%m') +) AS cs +ON + ds.pay_month = cs.pay_month; diff --git a/Game_Play_Analysis_I.sql b/Game_Play_Analysis_I.sql new file mode 100644 index 0000000..749fdf1 --- /dev/null +++ b/Game_Play_Analysis_I.sql @@ -0,0 +1,3 @@ +# Write your MySQL query statement below +SELECT A.player_id, MIN(A.event_date) AS first_login +FROM Activity A GROUP By A.player_id; \ No newline at end of file diff --git a/Report_Contiguos_Dates.sql b/Report_Contiguos_Dates.sql new file mode 100644 index 0000000..03637e7 --- /dev/null +++ b/Report_Contiguos_Dates.sql @@ -0,0 +1,51 @@ +# Write your MySQL query statement below +WITH combined_status AS ( + + SELECT + fail_date AS dat, + 'failed' AS period_state + FROM + Failed + WHERE + YEAR(fail_date) = 2019 + + UNION ALL + + SELECT + success_date AS dat, + 'succeeded' AS period_state + FROM + Succeeded + WHERE + YEAR(success_date) = 2019 +), +ranked_status AS ( + + SELECT + dat, + period_state, + ROW_NUMBER() OVER (ORDER BY dat) AS row_num, + RANK() OVER (PARTITION BY period_state ORDER BY dat) AS state_rank + FROM + combined_status +), +grouped_status AS ( + -- Use the difference between row_num and state_rank as grouping key + SELECT + dat, + period_state, + ROW_NUMBER() OVER (ORDER BY dat) - RANK() OVER (PARTITION BY period_state ORDER BY dat) AS grp + FROM + combined_status +) + +SELECT + period_state, + MIN(dat) AS start_date, + MAX(dat) AS end_date +FROM + grouped_status +GROUP BY + period_state, grp +ORDER BY + start_date; diff --git a/Student_Report_By_Geography.sql b/Student_Report_By_Geography.sql new file mode 100644 index 0000000..6c30f87 --- /dev/null +++ b/Student_Report_By_Geography.sql @@ -0,0 +1,12 @@ +WITH first as( + SELECT name as 'America', ROW_NUMBER() OVER(ORDER BY name) AS 'rnk' From student WHERE continent = 'America' +), +second as( + SELECT name as 'Asia', ROW_NUMBER() OVER(ORDER BY name) AS 'rnk' From student WHERE continent = 'Asia' +), +third as( + SELECT name as 'Europe', ROW_NUMBER() OVER(ORDER BY name) AS 'rnk' From student WHERE continent = 'Europe' +) + +SELECT America , Asia , Europe FROM second RIGHT JOIN first on first.rnk = second.rnk LEFT JOIN third +ON first.rnk = third.rnk; \ No newline at end of file