SQL中的排座位问题

表: Seat

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

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

按 id 升序 返回结果表。

来源:力扣(LeetCode

从上到下,存在两个学生就交换一次,总数为计数在队伍中不交换

思路:一般是判断当前id,这个是不是最后的一个学生,再通过 窗口函数 :

往前取N行 lag(参照行,行数N,default值)

往后取N行 lead()

转换查询出来的位置;

select id,
    if(i %2 = 0,last,next) student
    from (
        select id,student,
        lag() over(order by id ) last
        lead() over(order by id) next
    from 表
 ) ss

力扣上面有人用位运算来排序直接输出,直接囊括了边界值

select rank() over(order by (id -1)^1) as id,student  from 表;

在id值中,对于每个偶数减少2(偶数先减为奇数,该数二进制末尾是1,异或运算会被变成0,相当于-2)

对于每个奇数,先减为偶数,末尾是0,与1运算后,会加1,等于不变,这样就交换了相邻奇偶数

Original: https://www.cnblogs.com/aLiuLiu/p/16651270.html
Author: 阿榴
Title: SQL中的排座位问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612357/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL45讲之表空间回收

    本文介绍了为什么在删除部分表数据后表文件的大小保持不变,以及如何回收表空间。 [En] This article describes why the size of the tab…

    数据库 2023年5月24日
    064
  • LIMIT和OFFSET分页性能差!今天来介绍如何高性能分页

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 前言 之前的大多数人分页采用的都…

    数据库 2023年6月11日
    0127
  • Python_Pandas入门

    一、什么是Pandas? 博文转载: https://www.runoob.com/pandas/pandas-tutorial.html 基于NumPy的一种工具,该工具是为解决…

    数据库 2023年6月11日
    0182
  • MRCTF2020 pyFlag

    可以看到在zip文件头和jpg文件尾中有提示这是秘密文件的part1,那么思路就打开了,将其他图片的秘密文件部分拼成一个文件即可。 全部合起来组成一个zip文件,不是伪加密,先爆破…

    数据库 2023年6月11日
    087
  • MySQL数据类型(精)

    数据类型(精) MySQL中的数据类型 整型类型 类型介绍 可选属性 M 显示宽度 不会影响类型的实际宽度 设置字段f1,f2,f3 f1 INT, f2 INT(5), f3 I…

    数据库 2023年5月24日
    089
  • Oracle 有排序的分页SQL写法

    第一种: 第二种: 第一种比第二种效率会高,这是因为:CBO 优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询…

    数据库 2023年6月16日
    088
  • MongoDB,入门看这一篇足矣!

    一、介绍 在介绍 MongoDB 之前,我先介绍一下业务开发的时候遇到的痛点,以便大家对它有一个更加清晰的认识! 最近在用数据库存储数据的时候发现这么一个坑,例如从消息队列中监听消…

    数据库 2023年6月14日
    081
  • Ansible简介

    Ansible 是一种常用的自动运维化工具,基于 python 开发,分布式,无需客户端,轻量级,配置语言采用 YAML。 模块化:调用特定的模块,完成特殊的任务。 2.Param…

    数据库 2023年6月14日
    0116
  • Xshell连接Centos7无法输入密码

    使用命令vi /etc/ssh/sshd_config 修改文件 在最后一行找到 PasswordAuthentication 改成yes 重新运行 systemctl resta…

    数据库 2023年6月14日
    0100
  • OpenSSH制作rpm包和升级OpenSSH过程中遇到的问题

    百度网盘:https://pan.baidu.com/s/1gqpH2xeOkYHJ0CiztbmqoQ 提取码:imfg cp x11-ssh-askpass-1.2.4.1.t…

    数据库 2023年6月14日
    0103
  • String vs StringBuffer vs StringBuilder

    String vs StringBuffer vs StringBuilder 本文翻译自:https://www.digitalocean.com/community/tutor…

    数据库 2023年6月11日
    096
  • MySQL系统变量和字符集

    书名《MySQL是怎样运行的:从根儿上理解MySQL》可自行百度 以下是知识点总结 重新认识Mysql MySQL是一个C/S架构的软件。 在Windows安装后首先注册成服务,然…

    数据库 2023年5月24日
    076
  • 数据分析大作战,SQL V.S. Python,来看看这些考题你都会吗 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40📘 本文地址:https://www.showm…

    数据库 2023年6月14日
    080
  • 盘点 | 常用 PG 数据恢复方案概览【建议收藏】

    作者:张连壮 PostgreSQL 研发负责人从事多年 PostgreSQL 数据库内核开发,对 Citus 有非常深入的研究。 PostgreSQL 本身不具备数据闪回和数据误删…

    数据库 2023年5月24日
    0139
  • MYSQL8.0版本安装失败!

    第一次安装失败 Windows Server 2012首先是使用mysql的最新安装包去安装,但是安装包在执行到 starting mysql server 时,就卡住不动了。手动…

    数据库 2023年5月24日
    079
  • 我竟然才知道slf4j里还有个MDC

    大家好久不见,我是walking。今天给大家带来一个日志方面的知识——MDC,不知道大家认识不,反正我是最近刚知道的😂 初见MDC 前两天看项目中的代码,无意中看到一个自定义的线程…

    数据库 2023年6月11日
    0147
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球