当前位置: 首页 > article >正文

SQL-leetcode—626. 换座位

626. 换座位

表: Seat

±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| student | varchar |
±------------±--------+
id 是该表的主键(唯一值)列。
该表的每一行都表示学生的姓名和 ID。
ID 序列始终从 1 开始并连续增加。

编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的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 升序 返回结果表。

  • 条件1:交换每两个连续的学生的座位号 也就是id ,相当于一个+1、一个-1
  • 条件2:如果学生的数量是奇数,则最后一个学生的id不交换,怎么判断最后一位学生且奇数?
  • 按照id排序升序返回

方法一 if嵌套 + 子查询

select
-- 判断奇数和偶数,并做交换,在奇数处理时再加一个条件,判断最后一位是奇数不交换的情况即可。
    if(id%2=0,id-1,if(id=(select count(1) from Seat),id,id+1)) as id
    ,student
from Seat order by id 

方法二 row_number、rank()

-- if(id%2=0,id-2,id) 你细品
-- 我不交换,我把偶数统一减2,再排个序,是不是一样的效果,也不用考虑奇数末尾不移动了
select
    rank() over(order by if(id%2=0,id-2,id)) as id
    ,student
from Seat order by id 

-- row_number()
select
    row_number() over(order by if(id%2=0,id-2,id)) as id
    ,student
from Seat order by id 

http://www.kler.cn/a/506466.html

相关文章:

  • 持续集成 01|Gitee介绍、Pycharm使用Gitee
  • excel仅复制可见单元格,仅复制筛选后内容
  • 一文掌握Docker
  • ROS1学习记录
  • 01.02、判定是否互为字符重排
  • Outlook 无网络连接[2604] 错误解决办法
  • opencv_图像处理_去噪声_采用中值滤波
  • 设计模式相关面试
  • php审计1-extract函数变量覆盖
  • 数据仓库的复用性:模型层面通用指标体系、参数化模型、版本化管理
  • Rust中的Rc. Cell, RefCell
  • redis-6.26主从配置
  • 【AI落地】如何创建字节的coze扣子工作流 ——以“批量获取抖音视频文案”为例
  • Ubuntu 的内置字体中哪些字体支持中文
  • Windows系统命令cmd集锦(Windows System Command cmd Collection)
  • mac下安装nvm的node版本管理工具
  • Linux:System V - 信号量
  • 基于API接口的电商数据可视化探索与实践
  • 论文笔记-arXiv2025-A survey about Cold Start Recommendation
  • [RabbitMQ] RabbitMQ运维问题(RabbitMQ完结)
  • 刷刷题刷题刷题
  • 学成在线_内容管理模块_创建模块工程
  • Linux安装docker,安装配置xrdp远程桌面
  • 基于JavaEE的超市外卖系统的设计与实现_springboot+vue
  • 使用贪心算法解决最小生成树问题
  • 记录一次微信小程序使用云能力开发的过程