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

626,换座位

换座位

原始数据如下:

在这里插入图片描述

分析

第一步:求出有多少学生

with t1 as (
    select count(*) cnt from Seat
)select
    *
from Seat, t1;

在这里插入图片描述

第二步:我们在实际开发中,一般不会对主键进行更改,所以我们添加新的一列即行号

with t1 as (
    select count(*) cnt from Seat
)select
    *,
    row_number() over (order by id) row_num
from Seat, t1;

在这里插入图片描述

第三步:开始进行对行号的判断,若行号为奇数且奇数行号与总人数不相等时,将行号加一,若行号为奇数且奇数行号与总人数相等时,行号不变,否则行号减一,在重新对行号排序即可

with t1 as (
    select count(*) cnt from Seat
), t2 as (
    select
        *,
        row_number() over (order by id) row_num
    from Seat, t1
)select
    case
        when mod(row_num, 2) != 0 and id != cnt then row_num + 1
        when  mod(row_num, 2) != 0 and id = cnt then row_num
        else row_num - 1
    end id,
    student
from t2 order by id;

在这里插入图片描述

实现

with t1 as (
    select count(*) cnt from Seat
), t2 as (
    select
        *,
        row_number() over (order by id) row_num
    from Seat, t1
)select
    case
        when mod(row_num, 2) != 0 and id != cnt then row_num + 1
        when  mod(row_num, 2) != 0 and id = cnt then row_num
        else row_num - 1
    end id,
    student
from t2 order by id;

总结

两个元素滑动窗口两两交换,最后判断一下边界


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

相关文章:

  • LLM - Llama 3 的 Pre/Post Training 阶段 Loss 以及 logits 和 logps 概念
  • 【动态规划篇】欣赏概率论与镜像法融合下,别出心裁探索解答括号序列问题
  • k8s的原理和,k8s的安装
  • mapbox基础,style样式汇总,持续更新
  • Vue.js组件开发-实现滚动加载下一页
  • 机器学习无处不在,AI顺势而为,创新未来
  • 简述Linux和RTOS
  • DAPLINK 之 RTT 输出日志
  • Java洗车保养不出门上门服务一键享上门洗车保养维修系统小程序源码
  • YOLO模型在不同光照条件下的检测性能如何优化?
  • 红日安全vulnstack (二)
  • 存储设备专栏 2.5 -- linux 下块设备信息查看命令 lsblk 详细介绍】
  • 【UML】一个UML学习的还不错的几个帖子
  • 电脑版剪映使用本地字体
  • TCP三握四挥
  • 详解Oracle审计(一)
  • 【C++进阶】哈希表的介绍及实现
  • window下使用命令行启动llamafactory报错AttributeError: can‘t set attribute
  • DNS隧道流量分析
  • SQL Server 计算两个时间相差
  • 3.C++经典实例-奇数还是偶数
  • PCL 将点云投影到拟合平面
  • SpringBoot+MyBatis+MySQL项目基础搭建
  • AI智能聊天问答系统源码+AI绘画系统+图文搭建部署教程,文生图图生图,TTS语音识别输入,AI智能体,文档分析
  • 当贝投影双十一战报揭晓:天猫投影品类销量稳居首位
  • Android MQTT调试助手开发