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 problem1.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
WITH all_dates AS (
SELECT fail_date AS date, 'failed' AS state FROM Failed
WHERE fail_date BETWEEN '2019-01-01' AND '2019-12-31'
UNION ALL
SELECT success_date AS date, 'succeeded' AS state FROM Succeeded
WHERE success_date BETWEEN '2019-01-01' AND '2019-12-31'
),
date_with_rank AS (
SELECT
date,
state,
ROW_NUMBER() OVER (PARTITION BY state ORDER BY date) AS rk
FROM all_dates
),
grouped AS (
SELECT
date,
state,
DATE_SUB(date, INTERVAL rk DAY) AS group_id
FROM date_with_rank
)
SELECT
state AS period_state,
MIN(date) AS start_date,
MAX(date) AS end_date
FROM grouped
GROUP BY state, group_id
ORDER BY start_date;
9 changes: 9 additions & 0 deletions problem2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
select min(America) as America, min(Asia) as Asia, min(Europe) as Europe from
(select
case when continent= "America" then name else null end as "America",
case when continent = "Asia" then name else null end as "Asia",
case when continent = "Europe" then name end as "Europe",
row_number() over (partition by continent order by name) as rnk
from student
) t1
group by rnk
20 changes: 20 additions & 0 deletions problem3.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
WITH stats AS (
SELECT
DATE_FORMAT(s.pay_date, '%Y-%m') AS pay_month,
e.department_id,
AVG(s.amount) OVER (PARTITION BY DATE_FORMAT(s.pay_date, '%Y-%m')) AS company_avg,
AVG(s.amount) OVER (PARTITION BY DATE_FORMAT(s.pay_date, '%Y-%m'), e.department_id) AS dept_avg
FROM Salary s
JOIN Employee e ON s.employee_id = e.employee_id
)
SELECT
pay_month,
department_id,
CASE
WHEN dept_avg > company_avg THEN 'higher'
WHEN dept_avg < company_avg THEN 'lower'
ELSE 'same'
END AS comparison
FROM stats
GROUP BY pay_month, department_id, dept_avg, company_avg
ORDER BY pay_month, department_id;
18 changes: 18 additions & 0 deletions problem4.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Write your MySQL query statement below
-- select player_id,event_date as first_login
-- from (
-- select player_id,event_date,
-- rank() over (partition by player_id order by event_date) as second_login
-- from Activity ) t
-- where second_login=1;

-- select distinct(player_id), min(event_date) over(partition by player_id) as 'first_login'
-- from activity;

-- select player_id,min(event_date) as 'first_login'
-- from activity
-- group by player_id;

select distinct(player_id), first_value(event_date) over(partition by player_id order by event_date) as 'first_login'
from activity;