626. 换座位
表: Seat
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| name | varchar |
+-------------+---------+
Id是该表的主键列。
该表的每一行都表示学生的姓名和ID。
Id是一个连续的增量。
编写SQL查询来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。
按 id 升序 返回结果表。
查询结果格式如下所示。
示例 1:
输入:
Seat 表:
+----+---------+
| id | student |
+----+---------+
| 1 | Abbot |
| 2 | Doris |
| 3 | Emerson |
| 4 | Green |
| 5 | Jeames |
+----+---------+
输出:
+----+---------+
| id | student |
+----+---------+
| 1 | Doris |
| 2 | Abbot |
| 3 | Green |
| 4 | Emerson |
| 5 | Jeames |
+----+---------+
- 如果id为奇数,二级排序依据为当前id' = id+1。假如id=1,则排序依据为id' = 2,
- 如果id为偶数,二级排序依据为当前id' = id-1。假如id=2,则排序依据为id' = 1.
- 最终:一级排序依据id是12345,二级排序依据id'是21435,然后再根据id'升序排列开窗输出答案
select rank() over(order by if(id % 2 = 0 , id - 1 , id + 1)) 'id',student
from seat
标签:依据,626,+----+---------+,leetcode,order,排序,id
From: https://www.cnblogs.com/phonk/p/16747708.html