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
28 changes: 28 additions & 0 deletions 03-AvgSalaryDepartmentVsCompany.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-- 3 Problem 3 : Average Salary Department vs Company (https://leetcode.com/problems/average-salary-departments-vs-company/solution/ )

with companyavg as (
select
date_format(pay_date, '%y-%m') as pay_month,
avg(amount) as companyavg
from salary
group by pay_month
),
deptavg as (
select
date_format(pay_date, '%y-%m') as pay_month,
department_id,
avg(amount) as departmentavg
from salary
join employee on salary.employee_id = employee.employee_id
group by department_id, pay_month
)
select
deptavg.pay_month,
department_id,
case
when departmentavg > companyavg then 'higher'
when departmentavg < companyavg then 'lower'
else 'same'
end as comparison
from companyavg
join deptavg on deptavg.pay_month = companyavg.pay_month
16 changes: 16 additions & 0 deletions 04-GamePlayAnalysis-I.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Problem 4 : Game Play Analysis I (https://leetcode.com/problems/game-play-analysis-i/ )

select player_id, min(event_date) as 'first_login' from activity group by player_id
-- since this is group by it will return agg value as in one min

select distinct player_id, min(event_date) over (partition by player_id) as 'first_login' from activity
-- for partition by one needs distinct because partition by returns all the rows, it will return 2 rows of player id 1 with same min date

select distinct player_id, first_value(event_date) over (partition by player_id order by event_date)
as 'first_login' from activity
-- since we are using first_value, order by event date is important to pick 1st row

select a.player_id, a.event_date as 'first_login' from (
select b.player_id, b.event_date,
rank() over (partition by b.player_id order by b.event_date) as 'rnk' from activity b
) a where a.rnk = 1