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
原文地址:https://blog.csdn.net/qq_54815732/article/details/140511593
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!