oracle中取余是用函数mod(m,n),其中m和n都是数字,该函数的的规则是:返回m/n的余数,如果 n 为 0,则返回 m
case when then else end 使用场景:
1.对已知的数据进行逻辑分组或者进行数据分析
2.通过条件控制语句嵌套函数达到自己想要的结果
题目:小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。
其中纵列的 id 是连续递增的
小美想改变相邻俩学生的座位。
你能不能帮她写一个 SQL query 来输出小美想要的结果呢?
注意:
如果学生人数是奇数,则不需要改变最后一个同学的座位。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/exchange-seats
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
seat表数据:
按要求需输出以下结果:
select t.id,
case mod(t.id, 2)
when 1 then -- 奇数位,与后一位交换(取后一位姓名)
nvl((select o. name from seat o where t.id + 1 = o.id), t.name)
else -- 偶数位, 与前一位交换(取前一位姓名)
(select o.name from seat o where t.id - 1 = o.id)
end name
from seat t