sql排序问题_sql中order by默认升序还是降序

sql排序问题_sql中order by默认升序还是降序排座位问题的思路 表: Seat + + + | Column Name | Type | + + + | id | int | | name | varchar | + + + Id是该表的主键列。

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,等于不变,这样就交换了相邻奇偶数

原文地址:https://www.cnblogs.com/aLiuLiu/archive/2022/09/02/16651270.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4825.html

(0)
上一篇 2023-06-03
下一篇 2023-06-03

相关推荐

  • 小红书的升级任务怎么做_小红书摘星阁是什么

    小红书的升级任务怎么做_小红书摘星阁是什么作者介绍:张亿皓,小红书基础技术部资深开发工程师,负责数据库相关的研发和落地工作。 TiDB 在小红书业务场景的应用简介 2017 年,小红书已经开始在生产业务中使用 TiDB ,真正成体系的去做 …

    2023-03-20
    148
  • 使用plot函数进行数据可视化

    使用plot函数进行数据可视化在数据分析和数据建模中,数据的可视化是非常重要的环节,它能帮助我们更好地理解数据、找出数据的特点和规律、进行更准确的数据分析和决策。python中的matplotlib包中的plot函数是一个非常强大的数据可视化工具,它能够帮助我们进行各种各样的数据可视化操作,如散点图、折线图、柱状图、箱线图等等。

    2024-06-05
    57
  • MySQL数据库:注释及数据类型

    MySQL数据库:注释及数据类型注释 数据类型 1.整形 ​ tinyint、smallint、mediumint、int、bigint ​ 小整数值 大整数值 大整数值 大整数值 极大整数值 2.浮点型 ​ float、doubl

    2022-12-21
    156
  • 分布式存储的六大优点「建议收藏」

    分布式存储的六大优点「建议收藏」分布式存储往往采用分布式的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息。它不但提高了系统的可靠性、可用性和存取效率,还易于扩展,将通用硬件引入的不稳定因素降到最低。优点如下:…

    2022-12-22
    150
  • mysql定时备份 任务计划_mysql 定时任务与事件

    mysql定时备份 任务计划_mysql 定时任务与事件简介 在生产环境上,为了避免数据的丢失,通常情况下都会定时的对数据库进行备份。而Linux的crontab指令则可以帮助我们实现对数据库定时进行备份。首先我们来简单了解crontab指令,如果你会了…

    2023-03-15
    165
  • Python 使用redis报:No module named redis问题

    Python 使用redis报:No module named redis问题初次使用redis时,在链接Redis后,运行报错“No module named redis”。 具体代码如下: import redis r = redis.Redis(host='192

    2022-12-16
    152
  • mysql数据库精简与绿色启动的区别_数据库停止无法启动

    mysql数据库精简与绿色启动的区别_数据库停止无法启动1.下载MYSQL的zip包,解压ZIP包 版本低的相对需要的空间少,最好能在mysql-5.6以下,我测试的最高5.6版本为mysql-5.6.46,主要是里面有my.ini文件,高于5.6的版本里

    2023-01-25
    161
  • win8远程桌面连接 批量管理程序[通俗易懂]

    win8远程桌面连接 批量管理程序[通俗易懂]win8远程桌面连接 批量管理程序远程桌面是微软公司为了便于网络管理员管理维护服务器推出的一项服务。从windows 2000 server版本开始引入,网络管理员时候远程桌面连接器连接到网络任意一…

    2023-02-23
    152

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注