diff --git a/Problem1.sql b/Problem1.sql new file mode 100644 index 0000000..dedbb7d --- /dev/null +++ b/Problem1.sql @@ -0,0 +1,3 @@ +SELECT score , +DENSE_RANK() OVER(ORDER BY score DESC) as "rank" +FROM Scores ; \ No newline at end of file diff --git a/Problem2.sql b/Problem2.sql new file mode 100644 index 0000000..3e57c5c --- /dev/null +++ b/Problem2.sql @@ -0,0 +1,8 @@ +SELECT +CASE + WHEN id = ( SELECT MAX(id) FROM Seat ) AND MOD(id,2) = 1 THEN id + WHEN MOD(id,2) = 1 THEN id + 1 + ELSE id - 1 +END as "id", student +FROM Seat +ORDER BY id ; \ No newline at end of file diff --git a/Problem3.sql b/Problem3.sql new file mode 100644 index 0000000..2e44fea --- /dev/null +++ b/Problem3.sql @@ -0,0 +1,6 @@ +SELECT id, +CASE WHEN p_id IS NULL THEN 'Root' +WHEN id IN (SELECT p_id FROM Tree WHERE p_id IS NOT NULL) AND p_id IS NOT NULL THEN 'Inner' +ELSE 'Leaf' +END as 'type' +FROM Tree \ No newline at end of file diff --git a/Problem4.sql b/Problem4.sql new file mode 100644 index 0000000..835fcbb --- /dev/null +++ b/Problem4.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 e.salary DESC ) AS 'rnk' +FROM Employee e +LEFT JOIN Department d ON d.id = e.departmentId +GROUP BY Department, Employee) + +SELECT Department, Employee, Salary FROM CTE +WHERE rnk < 4 \ No newline at end of file