diff --git a/Problem 1.sql b/Problem 1.sql new file mode 100644 index 0000000..941f8dd --- /dev/null +++ b/Problem 1.sql @@ -0,0 +1 @@ +select score, dense_rank() over (order by score desc) as 'rank' from Scores \ No newline at end of file diff --git a/Problem 2.sql b/Problem 2.sql new file mode 100644 index 0000000..71c78ec --- /dev/null +++ b/Problem 2.sql @@ -0,0 +1,8 @@ +select ( + case + when mod(id, 2) != 0 and id != cnt then id + 1 + when mod(id, 2) != 0 and id = cnt then id + else id - 1 + end +) AS 'id', student from Seat, (select count(*) as cnt from Seat) AS seat_cnt +order by id; \ No newline at end of file diff --git a/Problem 3.sql b/Problem 3.sql new file mode 100644 index 0000000..9b73a7d --- /dev/null +++ b/Problem 3.sql @@ -0,0 +1,6 @@ +select id, ( + case + when isnull(p_id) then 'Root' + when id in (select distinct p_id from Tree) then 'Inner' + else 'Leaf' + end) as type from Tree \ No newline at end of file diff --git a/Problem 4.sql b/Problem 4.sql new file mode 100644 index 0000000..b92d89e --- /dev/null +++ b/Problem 4.sql @@ -0,0 +1,8 @@ +with cte as ( + select d.name as Department, e.name as Employee, e.salary as Salary, + dense_rank() over (partition by d.name order by Salary desc) as rnk + from Employee e + left join Department d on d.id = e.departmentId +) + +select Department, Employee, Salary from cte where rnk <= 3 \ No newline at end of file