【力扣白嫖日记】626.换座位

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

626.换座位
表:Seat

列名类型
idint
studentvarchar

id 是该表的主键(唯一值)列。
该表的每一行都表示学生的姓名和 ID。
id 是一个连续的增量。

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


我那不值一提的想法:

  • 首先梳理表内容,题干一共给了一张座位表,记录了学生id学生姓名。
  • 其次分析需求,需要交换每两个连续的学生的座位号,如果学生数量是奇数,则最后一排不交换。
  • 对于这道题我们肯定需要用到逻辑判断。
  • 这里我用的是case when,对于判断学生换座位的顺序,交换两个人的序号,也就是第一个换到第二个,第二个换到第一个,也就是奇数+1,偶数-1,用sql表示就是 case when id % 2 != 0 then id + 1case when id % 2 = 0 then id - 1
  • 对于如果是奇数最后一排不换,我们首先需要查询整个表学生的数量,然后判断是否是奇数,如果是则返回id,也就是不变。
select 
    case when id = (select count(id) from Seat) and id % 2 != 0 then id 
    when id % 2 != 0 then  id + 1
    else id - 1 
end as id,student
from Seat 
order by id 

结果:

在这里插入图片描述


总结:

能运行就行。


  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值