Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions AvdDepSalVSComSal.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Approach 1:

Select departmentSalary.pay_month, department_id, (
Case
When department_avg>company_avg then “higher”
When department_avg<company_avg then “lower”
else
“same”
End) as Comparison from (Select date_format(pay_date, ‘%y-%m’) as pay_month, department_id, avg(amount) as department_avg from Salary join Employee on salary.employee_id=employee.employee_id group by department_id,pay_month) as departmentSalary join
(Select date_format(Pay_date, ‘%y-%m’) as pay_month, avg(amount) as company_avg from salary group by pay_month) as companySalary on departmentSalary.pay_month=companySalary.pay_month;


# Approach 2:

With departmentSalary as(
Select date_format(pay_date, ‘%y-%m’) as pay_month, department_id, avg(amount) as department_avg from Salary join Employee on salary.employee_id=employee.employee_id group by department_id,pay_month) ,
companySalary as(
Select date_format(Pay_date, ‘%y-%m’) as pay_month, avg(amount) as company_avg from salary group by pay_month)

Select departmentSalary.pay_month, department_id, (
Case
When department_avg>company_avg then “higher”
When department_avg<company_avg then “lower”
else
“same”
End) as Comparison from departmentSalary join companySalary on departmentSalary.pay_month=companySalary.pay_month;

30 changes: 30 additions & 0 deletions GamePlayAnalysis1.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Approach 1:
SELECT player_id, MIN(event_date) AS first_login FROM Activity GROUP BY player_id;


# Approach 2:
SELECT
player_id,
event_date AS first_login
FROM (
SELECT
player_id,
event_date,
RANK() OVER (PARTITION BY player_id ORDER BY event_date ASC) AS rnk
FROM Activity
) subquery
WHERE rnk = 1;


# Approach 3:
SELECT DISTINCT
player_id,
FIRST_VALUE(event_date) OVER (PARTITION BY player_id ORDER BY event_date ASC) AS first_login
FROM Activity;


# Approach 4:
SELECT DISTINCT
player_id,
LAST_VALUE(event_date) OVER (PARTITION BY player_id ORDER BY event_date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS first_login
FROM Activity;
27 changes: 27 additions & 0 deletions Report_contiguos.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#Approach 1:

WITH CTE AS (
SELECT fail_date AS dat,
'failed' AS period_state,
RANK() OVER (ORDER BY fail_date) AS rnk
FROM failed
WHERE YEAR(fail_date) = 2019
UNION ALL
SELECT success_date AS dat,
'succeeded' AS period_state,
RANK() OVER (ORDER BY success_date) AS rnk
FROM succeeded
WHERE YEAR(success_date) = 2019
)

SELECT period_state,
MIN(dat) AS start_date,
MAX(dat) AS end_date
FROM (
SELECT *,
RANK() OVER (ORDER BY dat) - rnk AS group_rnk
FROM CTE
) AS grouped_cte
GROUP BY group_rnk, period_state
ORDER BY 2;

68 changes: 68 additions & 0 deletions StudentReportByGeo.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Approach 1:
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;


# Approach 2:
SELECT @as := @as + 1 AS asrank, name AS Asia
FROM student
WHERE continent = 'Asia'
ORDER BY name;

SELECT @am := @am + 1 AS amrank, name AS America
FROM student
WHERE continent = 'America'
ORDER BY name;

SELECT @eu := @eu + 1 AS eurank, name AS Europe
FROM student
WHERE continent = 'Europe'
ORDER BY name;

SELECT America, Asia, Europe
FROM (
SELECT @as := @as + 1 AS asrank, name AS Asia
FROM student
WHERE continent = 'Asia'
ORDER BY name
) t1
RIGHT JOIN (
SELECT @am := @am + 1 AS amrank, name AS America
FROM student
WHERE continent = 'America'
ORDER BY name
) t2
ON asrank = amrank
LEFT JOIN (
SELECT @eu := @eu + 1 AS eurank, name AS Europe
FROM student
WHERE continent = 'Europe'
ORDER BY name
) t3
ON amrank = eurank;