forked from shijbian/LeetCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexchange-seats.sql
More file actions
40 lines (38 loc) · 1.02 KB
/
Copy pathexchange-seats.sql
File metadata and controls
40 lines (38 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Time: O(nlogn)
# Space: O(n)
# Mary is a teacher in a middle school and she has a table seat storing
# students' names and their corresponding seat ids.
#
# The column id is continuous increment.
# Mary wants to change seats for the adjacent students.
# Can you write a SQL query to output the result for Mary?
# +---------+---------+
# | id | student |
# +---------+---------+
# | 1 | Abbot |
# | 2 | Doris |
# | 3 | Emerson |
# | 4 | Green |
# | 5 | Jeames |
# +---------+---------+
#
# For the sample input, the output is:
# +---------+---------+
# | id | student |
# +---------+---------+
# | 1 | Doris |
# | 2 | Abbot |
# | 3 | Green |
# | 4 | Emerson |
# | 5 | Jeames |
# +---------+---------+
#
# Note:
# If the number of students is odd, there is no need to change the last one's seat.
SELECT
s1.id, COALESCE(s2.student, s1.student) AS student
FROM
seat s1
LEFT JOIN
seat s2 ON ((s1.id + 1) ^ 1) - 1 = s2.id
ORDER BY s1.id;