Mysql + Oracle

eg626. 换座位

表: Seat

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| student     | varchar |
+-------------+---------+
id 是该表的主键(唯一值)列。
该表的每一行都表示学生的姓名和 ID。
id 是一个连续的增量。

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

按 id 升序 返回结果表。

mod(m,n)
这里写图片描述
(1)MOD返回m除以n的余数,如果n是0,返回m。
(2)这个函数以任何数字数据类型或任何非数值型数据类型为参数,可以隐式地转换为数字数据类型。
Oracle用最高的数字优先级来确定参数,隐式地将剩下的参数转换为该数据类型,并返回数据类型。

lag(字段值,向上获取行数,没有获取到的返回默认值) over(partition by 分区字段,order by 排序字段)
lead(字段值,向下获取行数,没有获取到的返回默认值) over(partition by 分区字段,order by 排序字段)

/* Write your PL/SQL query statement below */
--case when判断
select 
id,
case when mod(id,2)=1 then lead(student,1,student)over(order by id) 
else lag(student,1)over(order by id) 
end student
from seat
order by id

 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 17:28:07       123 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 17:28:07       131 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 17:28:07       109 阅读
  4. Python语言-面向对象

    2024-07-20 17:28:07       117 阅读

热门阅读

  1. 二分 以及例题

    2024-07-20 17:28:07       31 阅读
  2. MySQL——视图

    2024-07-20 17:28:07       27 阅读
  3. Window任务栏应用图片无法加载解决方法

    2024-07-20 17:28:07       31 阅读
  4. linux shell(上)

    2024-07-20 17:28:07       31 阅读
  5. RK3588 编译opencv&opencv_contrib记录

    2024-07-20 17:28:07       35 阅读
  6. 二叉树---路径总和

    2024-07-20 17:28:07       25 阅读
  7. windows 安装 kubectl 并连接到 k8s 集群【图文教程】

    2024-07-20 17:28:07       26 阅读
  8. computeIfAbsent 和 putIfAbsent

    2024-07-20 17:28:07       27 阅读
  9. 微软Edge浏览器全解析教程

    2024-07-20 17:28:07       25 阅读