链接:
https://leetcode.com/problems/exchange-seats/description/
题目:
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.
思路:
case的运用,注意最大值如果是奇数的话不用改变位置。
Answer:
select case when id = (select max(id) from seat) and mod(id, 2) = 1 then id
when id < (select max(id) from seat) and mod(id, 2) = 1 then id + 1
when mod(id, 2) = 0 then id - 1
end as id,
student
from seat
order by
id
解决一个SQL查询问题,帮助Mary老师为相邻的学生交换座位。通过CASE语句实现座位的灵活调整,确保学生位置按要求变动,同时考虑到学生总数为奇数时的特殊情况。
754

被折叠的 条评论
为什么被折叠?



