跳到主要内容

626.组合两个表

序号题目难度
626题目链接中等

题目大意​

编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。

按 id 升序 返回结果表。

表: Seat

Column NameType
idint
studentvarchar

id 是该表的主键(唯一值)列。 该表的每一行都表示学生的姓名和 ID。 ID 序列始终从 1 开始并连续增加。

示例​

输入​

Seat 表:

idstudent
1Abbot
2Doris
3Emerson
4Green
5Jeames

输出​

idstudent
1Doris
2Abbot
3Green
4Emerson
5Jeames

解释​

请注意,如果学生人数为奇数,则不需要更换最后一名学生的座位。

参考答案​

select
id
,(case when id % 2 = 0
then (case when (lag(student) over(order by id)) is null then student else (lag(student) over(order by id)) end)
else (case when (lead(student) over(order by id)) is null then student else (lead(student) over(order by id)) end)
end) as student
from seat;