Skip to content

Commit 890eb4b

Browse files
authored
Create the-number-of-seniors-and-juniors-to-join-the-company.sql
1 parent 26604ea commit 890eb4b

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Time: O(nlogn)
2+
# Space: O(n)
3+
4+
WITH senior_cte AS
5+
(
6+
SELECT 'Senior' AS experience,
7+
IFNULL(MAX(salary_accu), 0) AS salary,
8+
IFNULL(MAX(rn), 0) AS rn
9+
FROM
10+
(
11+
SELECT SUM(salary) OVER(ORDER BY salary, employee_id) AS salary_accu,
12+
ROW_NUMBER() OVER(ORDER BY salary, employee_id) rn
13+
FROM candidates
14+
WHERE experience = 'Senior'
15+
) a
16+
WHERE salary_accu <= 70000
17+
),
18+
junior_cte AS
19+
(
20+
SELECT 'Junior' AS experience,
21+
IFNULL(MAX(salary_accu), 0) AS salary,
22+
IFNULL(MAX(rn), 0) AS rn
23+
FROM
24+
(
25+
SELECT SUM(salary) OVER(ORDER BY salary, employee_id) AS salary_accu,
26+
ROW_NUMBER() OVER(ORDER BY salary, employee_id) AS rn
27+
FROM candidates
28+
WHERE experience = 'Junior'
29+
) a
30+
WHERE salary_accu + (SELECT salary FROM senior_cte) <= 70000
31+
)
32+
33+
SELECT experience, rn AS accepted_candidates
34+
FROM
35+
(
36+
SELECT experience, rn FROM senior_cte
37+
UNION ALL
38+
SELECT experience, rn FROM junior_cte
39+
) a;

0 commit comments

Comments
 (0)