首页 > 其他分享 >力扣2308. 按性别排列表格

力扣2308. 按性别排列表格

时间:2024-11-18 20:50:18浏览次数:3  
标签:2308 表格 gender 力扣 other user female male id

一、数据

2308. 按性别排列表格

表: Genders

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| user_id     | int     |
| gender      | varchar |
+-------------+---------+
user_id 是该表的主键(具有唯一值的列)。
gender 的值是 'female', 'male','other' 之一。
该表中的每一行都包含用户的 ID 及其性别。
表格中 'female', 'male','other' 数量相等。

编写一个解决方案以重新排列 Genders 表,使行按顺序在 'female''other' 和 'male' 之间交替。同时每种性别按照 user_id 升序进行排序。
按 上述顺序 返回结果表。
返回结果格式如以下示例所示。

示例 1:

输入: 
Genders 表:
+---------+--------+
| user_id | gender |
+---------+--------+
| 4       | male   |
| 7       | female |
| 2       | other  |
| 5       | male   |
| 3       | female |
| 8       | male   |
| 6       | other  |
| 1       | other  |
| 9       | female |
+---------+--------+
输出: 
+---------+--------+
| user_id | gender |
+---------+--------+
| 3       | female |
| 1       | other  |
| 4       | male   |
| 7       | female |
| 2       | other  |
| 5       | male   |
| 9       | female |
| 6       | other  |
| 8       | male   |
+---------+--------+
解释: 
女性:ID 3、7、9。
其他性别:ID 1、2、6。
男性:ID 4、5、8。
我们在 'female', 'other','male' 之间交替排列表。
注意,每种性别都是按 user_id 升序排序的。

二、分析

本题的解法是可以使用窗口函数让数据按照gender分组,然后按照user_id进行分组,就会形成以下数据:

然后将其作为一个临时表,在主查询中让数据按照RK和gender正序排序。

三、代码

with t1 as (
    select user_id, gender,
       row_number() over (partition by gender order by user_id) rk
from genders
)
select user_id,gender,rk
from t1
order by rk,gender;

四、总结

注意:

因为在创建表时,gender为Enum枚举类型,然后当对其进行排序时,正序排序就时按照定义的顺序,即:

Create table If Not Exists Genders (user_id int, gender ENUM('female', 'other', 'male'));

当对gender进行正序排序时:female为最小,male为最大。

标签:2308,表格,gender,力扣,other,user,female,male,id
From: https://blog.csdn.net/dhdbanwan/article/details/143866469

相关文章

  • 力扣-2175、世界排名的变化
    一、数据来源2175、世界排名的变换表:TeamPoints+-------------+---------+|ColumnName|Type|+-------------+---------+|team_id|int||name|varchar||points|int|+-------------+---------+team_id包含唯一值。这张表......
  • css 表格圆角+边框不重叠
    .resource-table{border-collapse:separate;/*设置边框分离*/border-spacing:0;/*边框间距设置为0*/width:100%;/*表格宽度*/theadtr{background:#f0f3f5;th{color:#5a6066;border-top:1pxsolid#b......
  • leetcode 扫描线专题 06-leetcode.836 rectangle-overlap 力扣.836 矩形重叠
    题目矩形以列表[x1,y1,x2,y2]的形式表示,其中(x1,y1)为左下角的坐标,(x2,y2)是右上角的坐标。矩形的上下边平行于x轴,左右边平行于y轴。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形rec1和rec2。如果它......
  • leetcode 扫描线专题 06-leetcode.391 perfect-rectangle 力扣.391 完美矩形
    题目给你一个数组rectangles,其中rectangles[i]=[xi,yi,ai,bi]表示一个坐标轴平行的矩形。这个矩形的左下顶点是(xi,yi),右上顶点是(ai,bi)。如果所有矩形一起精确覆盖了某个矩形区域,则返回true;否则,返回false。示例1:输入:rectangles=[[1,1,3,3],[3,1,4,2],......
  • 力扣题目解析--括号生成
    题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"]提示:1<=n<=8代码展示 classSolution{publi......
  • 断桥铝窗框壁厚2.0mm及以上的标准表格,涵盖了不同部件和相应的壁厚要求。此表格有助于
    断桥铝窗框壁厚2.0mm及以上的标准表格,涵盖了不同部件和相应的壁厚要求。此表格有助于选择适合大尺寸窗户或高层建筑的窗框材料。断桥铝窗框壁厚2.0mm及以上标准表格部件/参数壁厚(mm)适用标准适用范围/特点外框壁厚2.0-2.5国家标准GB/T8478-2019外框壁厚直接......
  • 家用电线的常用尺寸(线径)、规格和应用范围如下所示。表格内容包括了不同电线的额定电流
    家用电线的常用尺寸(线径)、规格和应用范围如下所示。表格内容包括了不同电线的额定电流、线径、常见用途等信息。电线规格(mm²)线径(mm)额定电流(A)常见应用1.5mm²1.38mm10A照明回路、插座回路、小功率电器如电风扇、台灯等2.5mm²1.78mm16A小型电器、大功......
  • 7-Zip 和 WinRAR 的对比分析,按不同的特性进行表格化:
    7-Zip和WinRAR的对比分析,按不同的特性进行表格化:特性7-ZipWinRAR开发公司7-Zip由IgorPavlov开发WinRAR由RARLab开发支持的格式支持7z,ZIP,RAR,TAR,GZ,ISO等支持RAR,ZIP,TAR,GZ,ISO等压缩比率通常提供更高的压缩比率(尤其是7z格式)......
  • 102. 二叉树的层序遍历【 力扣(LeetCode) 】
    文章目录零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码零、原题链接102.二叉树的层序遍历一、题目描述给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。二、测试用例示例1:输入:root=[3,9,20,null,nul......
  • 力扣825.适龄的朋友,全网最详细解释
    好友请求的总数(LeetCode825)题目描述某社交平台规定,用户A可以向用户B发送好友请求需满足以下条件:用户A的年龄不小于用户B的年龄。用户B的年龄大于0.5*用户A的年龄+7。用户B的年龄小于等于用户A的年龄。此外,一个用户不能向自己发送好友请求。输入:......