forked from fishercoder1534/Leetcode
-
Notifications
You must be signed in to change notification settings - Fork 1
/
_626.sql
44 lines (42 loc) · 1.13 KB
/
_626.sql
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
41
42
43
44
--626. Exchange Seats
--
--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
(CASE
WHEN MOD(id, 2) != 0 AND counts != id THEN id + 1
WHEN MOD(id, 2) != 0 AND counts = id THEN id
ELSE id - 1
END) AS id,
student
FROM
seat,
(SELECT
COUNT(*) AS counts
FROM
seat) AS seat_counts
ORDER BY id ASC;