环球新资讯:LeetCode实战:row_number函数用法
row_number函数用法
1、函数讲解2、LeetCode实战
(资料图)
1、函数讲解
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
简单的说,row_number()从1开始,为每条分组记录返回一个数字,举例:
ROW_NUMBER() OVER(ORDER BY xlh DESC)
这里的用法是先将xlh列进行降序排序,再将降序后的每条记录返回一个序号。
row_number() OVER (PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
初始数据显示为: 我们的目标是根据部门进行分组,并显示每个部门的工资等级 SQL语句:
select * ,Row_number() OVER(partition by deptid order by salary DESC) rankFORM employee
最终显示结果为:
2、LeetCode实战
题目是LeetCode上的题目: 编写一个sql查询,查找所有至少连续出现三次的数字。返回的结果表中的数据可以按任意顺序排列。 查询格式如下面的例子所示: 下面是具体是解题代码:
select distinct Num as ConsecutiveNums from( select Num,count(1) as SerialCount from (select id,Num, row_number() over(order by id) - row_number() over(partition by Num order by Id) as SerialNumberSubGroup from Logs ) as sub group by Num,SerialNumberSubGroup having count(1) >= 3 ) as res
上面的解题是参照题解里以为大佬的解题思路: 具体解题过程参照: 作者:neilsons 链接:https://leetcode-cn.com/problems/consecutive-numbers/solution/sql-server-jie-fa-by-neilsons/ 原始数据:
1、对原始数据编号,从1开始使用 row_number() over(表达式) 函数,使用Id来排序既row_number()
SELECT Id,Num,row_number() over(order by id) as SerialNumFROM ContinueNumber
2、使用原始数据另一维度排序,这些num值一样的分组排序,然后对其编号同样使用row_number() over(表达式),参数:(num分组,id排序)row_number() over(partition by num order by id)
SELECT Id,Num,ROW_NUMBER() over(partition by Num order by Id) as SerialGroupFROM ContinueNumber
3、通过上述1和上述2 看一下有什么规律吗?两个列(SerialNum,SerialGroup)对应相减,只要连续,相减得到的值是一样的。不连续相减得到的值也不同。
SELECT Id,Num, row_number() over(order by id) - row_number() over(partition by Num order by Id) as SerialNumberSubGroup FROM ContinueNumber
4、通过上述3,通过列Num和列SerialNumberSubGroup分组,最后拿到Num,就是求得的数据,去重(distinct)指:有可能同一个数字在多处出现三次以上。
SELECT DISTINCT Num FROM (SELECT Num,COUNT(1) as SerialCount FROM (SELECT Id,Num,row_number() over(order by id) -ROW_NUMBER() over(partition by Num order by Id) as SerialNumberSubGroupFROM ContinueNumber) as SubGROUP BY Num,SerialNumberSubGroup HAVING COUNT(1) >= 3) as Result
这个解题的核心是要想明白一个结论:如果一个num连续出现时,那么它出现的【真实序列】-它出现的次数一定是个定值。因为:
1、假设一个num出现后,它的 真实序列 为 i ,同时假设它是第 k 次出现的; 差值为 i-k.2、当它连续出现一次时,它的 真实序列 一定为 i+1 ; 它的出现次数显然也会+1,为 k+1 ; 差值为 i+1-(k+1)=i-k.3、当它连续出现第 n 次时,它的 真实序列 一定为 i+n;它出现的次数为 k+n;差值为 i+n-(k+n)=i-k.4、如果它不连续出现,假设m个其他num出现之后,它又出现了,则它的真实序列为 i+n+m,而出现的次数为 k+n+1;差值为 i-k+m-1 。
所以,上述解题大佬的做法其实就是: 第一步重排的serialNum表示:这个num出现的真实序列,也就是说在原始数据中,它是第几个出现的; 第二步重排的serialGroup表示:这个num是第几次出现的; 然后其他的步骤就比较容易想了。
标签:
相关推荐:
最新新闻:
- 速读:自动化控制系统——C/S架构系统
- 焦点速讯:【教程】矩阵相乘时 我们先写位移再缩放
- 世界播报:加强物理存储基础架构的可视化——VASA
- 环球新资讯:LeetCode实战:row_number函数用法
- realme GT Neo5 手机 240W 快充:充电 30 秒,通话 2 小时-环球快资讯
- 每日短讯:Pinkfong 公司与 Million Volt 合作推出全新 3D 动画情景喜剧“SEALOOK”
- DC高层解释取消《蝙蝠女》:如果发行会伤害品牌
- GI公布《生化4RE》新演示 游戏追加新武器十字弓
- 每日热门:一加手机官宣:与原神正式达成三年期战略合作!
- 可口可乐版手机来了:国产知名品牌打造
- 甲骨文将Red Hat Enterprise Linux引入Oracle Cloud Infrastructure
- 20 万级别?极氪 003 零百加速进入 3 秒俱乐部,秒杀百万超跑
- 新年爆红!小刀电动车再迎产品革新,航天动力系霸气开局势不可挡
- 苹果折叠屏笔记本将亮相:20.5寸超大屏:全球速看料
- 环球微资讯!律师谈12.4万抢购保时捷:商家不能单方面取消订单
- 卡普空更新旗下百万销量游戏名单 怪猎冰原销量突破1千万_环球即时看
- 柯南最新剧场版《黑铁的鱼影》正式海报 4月14日上映
- 网友吐槽手机APP广告乱跳转 晃一下就出现!
- 网易开放暴雪游戏退款申请通道 申请截止日期6月30日|当前消息
- 世界短讯!2023年三分热度品牌获天使轮融资3000万
- 麦克风没声音是什么原因?麦克风没声音具体解决方法
- 下划线在键盘上怎么打?下划线快捷键ctrl加什么?
- UDP端口要如何打开?UDP端口具体打开的方法步骤
- office2010免费密钥怎么找?office2010激活密钥分享及激活码使用步骤
- 本地连接在什么位置?本地连接怎样进行设置?本地连接的相关介绍
- 什么是IPX协议?ipx协议安装教程
- 系统分区是什么意思?win10系统分区怎样进行操作?
- 电脑出现wmiprvse.exe占cpu高怎么操作?wmiprvse.exe占cpu高详细处理步骤
- thumbs.db是什么文件?手机db文件怎么打开?
- 什么是ACPI?ACPI的六种状态介绍
- hiberfil文件是什么意思?hiberfil文件删除的详细步骤
- hiberfil.sys是什么文件?hiberfil.sys删除方法
- 玩穿越火线卡屏怎么办?穿越火线卡屏详细的教程展示解决步骤
- 为什么打开我的电脑很慢?打开我的电脑很慢解决方法
- xp打印机共享怎么设置?教你xp系统打印机共享设置方法
- 本地连接在什么位置?本地连接怎样进行设置?
- 索尼xperiaz1mini手机怎么样?索尼Z1 Mini手机配置参数详解
- 怎么解决蓝屏提示c000021a unknown hard error?解决方法
- 笔记本无线WIFI怎样设置共享?路由器怎么设置共享wifi?
- 怎么查手机短信记录?介绍中国移动查短信记录方法
- 如何建设一个网上商城?网上商城制作步骤
- 天天快看:《赛博朋克2077》DLSS3开启/关闭对比 帧数提升惊人
- 系列新作《尸变纪元:幸存者》公布 Steam页面上线
- 每日视讯:华盛顿大学研发几乎无电池无线通信装置 实现最远7米
- 本届公关,与财富自由无缘:观热点
- 荒野送货人 《Across the wilds》Steam页面上线|微速讯
- 焦点滚动:育碧《飙酷车神3》首曝预告 封闭测试明日开启
- 类魂动作《堕落之主》新截图:地狱魔物降临黑暗世界|环球动态
- 眼红ChatGPT爆火 谷歌竞品曝光 搜索或将大改
- 惠普打印机能打印图片不能打印文档_打印机能打印图片不能打印文档
- 【当前独家】6.5万元电脑被顺丰损坏:已经开启售后理赔
- RTX 4090 Ti最新消息:四槽600W 环球看热讯
- 新华三Cloudnet助力中小企业数字转型迈入新一程-热文
- 郭明錤爆料称iPhone 16 Ultra或将独占潜望式长焦_全球快讯
- 焦点观察:iPhone 16 Ultra成望远镜?支持6倍光学变焦
- 一个艰难的决定!EA宣布《战地》手游开发终止
- 家人侠归来!《速度与激情10》首张海报公开-环球热点
- Xbox 360线上商店将移除46款游戏 包括《黑暗之魂》:播报
- 《黑豹2》中国角色海报:瓦坎达英雄集结 2月7日上映
- 世界微速讯:《消逝的光芒》全系列热销3000万份 二代将迎来上市一周年
- 《潜渊症》2023年春季发售1.0正式版 Steam定价即将永涨
- 只有高端机型才有?曝潜望相机镜头仅限于iPhone 16 Pro Max
- 当前热点-一加与《原神》达成三年战略合作 开启移动端游戏新体验
- 2399元!三星发布 4TB T7 Shield便携式固态硬盘
- 【热闻】史诗级更新?今年晚些时候你的iPhone将推出5个新的iOS功能
- 焦点讯息:无路可退!苹果关闭iOS 16.2验证通道
- 花刺代理是什么?花刺代理怎么使用?
- DVD解码器如何安装?DVD解码器具体的安装步骤
- 苹果开机一直在开机画面怎么处理?怎么将苹果的界面主色调恢复成正常颜色?
- 自动点击器怎么使用?自动点击器怎么设置参数?
- iphone固件不兼容的原因是什么?苹果固件不兼容怎么办?
- 提示sd卡已受损是什么原因?修复已损坏的手机SD卡方法
- MSN帐号格式是什么?MSN用户名格式的详细介绍
- 尼康D300说明书是什么?尼康D300相机详细参数
- mp4和mp5的区别在哪?mp4和mov格式区别对比
- 如何解决爱奇艺提示播放失败?爱奇艺提示播放失败解决方法
- win7版本区别是什么?不同win7系统版本之间的区别盘点
- sbsettings怎么设置?sbsettings设置步骤
- win7软件程序窗口最小化后找不到了是怎么回事?解决方法步骤
- 无法上网和驱动不能识别?sl410k无线网卡驱动安装说明
- 怎么解决开机后本地连接慢的问题?开机后本地连接慢出现原因及解决方法
- pinterest是什么?pinterest打不开的解决方法
- sd卡根目录是什么?sd卡根目录在哪?
- ipadtv6是什么?苹果IpadTV电视棒的使用方法
- win10系统如何设置桌面下雪屏保?桌面下雪屏保设置步骤