首页 > 数据库 >leetcode-sql-626. 换座位 order by if

leetcode-sql-626. 换座位 order by if

时间:2022-10-01 20:34:31浏览次数:71  
标签:依据 626 +----+---------+ leetcode order 排序 id

626. 换座位

表: Seat

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

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

按 id 升序 返回结果表。

查询结果格式如下所示。

 

示例 1:

输入: 
Seat 表:
+----+---------+
| id | student |
+----+---------+
| 1  | Abbot   |
| 2  | Doris   |
| 3  | Emerson |
| 4  | Green   |
| 5  | Jeames  |
+----+---------+
输出: 
+----+---------+
| id | student |
+----+---------+
| 1  | Doris   |
| 2  | Abbot   |
| 3  | Green   |
| 4  | Emerson |
| 5  | Jeames  |
+----+---------+

ordery by if()的用法:if里面第一个判断条件中的字段作为第一个排序条件,后面是第二个排序条件,最终排序输出时,先根据第一个条件排序,然后再根据第二个条件排序 order by if(id%2=0,id-1,id+1),一级排序依据id,二级排序依据id'为当前id-1或id+1
  • 如果id为奇数,二级排序依据为当前id' = id+1。假如id=1,则排序依据为id' = 2,
  • 如果id为偶数,二级排序依据为当前id' = id-1。假如id=2,则排序依据为id' = 1.
  • 最终:一级排序依据id是12345,二级排序依据id'是21435,然后再根据id'升序排列开窗输出答案
select rank() over(order by if(id % 2 = 0 , id - 1 , id + 1)) 'id',student
from seat        
                

标签:依据,626,+----+---------+,leetcode,order,排序,id
From: https://www.cnblogs.com/phonk/p/16747708.html

相关文章

  • [Oracle] LeetCode 37 Sudoku Solver
    WriteaprogramtosolveaSudokupuzzlebyfillingtheemptycells.Asudokusolutionmustsatisfyallofthefollowingrules:Eachofthedigits1-9mustoc......
  • LeetCode 无重复字符的最长子串算法题解 All In One
    LeetCode无重复字符的最长子串算法题解AllInOnejs/ts实现无重复字符的最长子串无重复字符的最长子串原理图解滑动窗口"usestrict";/****@authorx......
  • LeetCode160 相交链表
       idea:比较相同信息,首先想到用嵌套for循环解决,方法比较简单,不过时间复杂度高 /** * Definition for singly-linked list. * struct ListNode { *......
  • [Oracle] LeetCode 560 Subarray Sum Equals K 思维+Map
    Givenanarrayofintegersnumsandanintegerk,returnthetotalnumberofsubarrayswhosesumequalstok.Asubarrayisacontiguousnon-emptysequenceof......
  • LeetCode 206 反转链表
    给你单链表的头节点head,请你反转链表,并返回反转后的链表。 示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]输出......
  • leetcode 513. Find Bottom Left Tree Value 找树左下角的值 (简单)
    一、题目大意给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。示例1:输入:root=[2,1,3]输出:1示例2:......
  • leetcode -- tree 3
    使用归并排序简单解决问题归并排序用传统方法归并classSolution:defsortArray(self,nums:List[int])->List[int]:defmergesort(nums:List[int......
  • 磨练 LeetCode 问题之禅:第 117 天——Powers
    磨练LeetCode问题之禅:第117天——Powers欢迎回到LeetCode日常练习系列.今天我做了3简单的问题。让我们开始!Photoby利兹桑切斯-维加斯on不飞溅二的幂[......
  • LeetCode剑指 Offer II 093 最长斐波那契数列
    LeetCode剑指OfferII093最长斐波那契数列classSolution:deflenLongestFibSubseq(self,arr:List[int])->int:n,loc,ans=len(arr),{},0......
  • #yyds干货盘点# LeetCode 热题 HOT 100:不同路径
    题目:一个机器人位于一个mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finis......