前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >row_number() OVER (PARTITION BY COL1 ORDER BY COL2)「建议收藏」

row_number() OVER (PARTITION BY COL1 ORDER BY COL2)「建议收藏」

作者头像
全栈程序员站长
发布于 2022-07-07 12:38:59
发布于 2022-07-07 12:38:59
29800
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是全栈君。

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) –表示依据COL1分组,在分组内部依据 COL2排序。而此函数返回的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table student (id int ,classes int ,score int);
insert into student values(1,1,89);
insert into student values(2,1,90);
insert into student values(3,1,76);
insert into student values(4,2,69);
insert into student values(5,2,79);
insert into student values(6,2,95);
insert into student values(7,3,80);
insert into student values(8,3,85);
insert into student values(9,3,79);
commit;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select t.* from student t;

–数据显示为 id classes score ————————————————————- 1 1 89 2 1 90 3 1 76 4 2 69 5 2 79 6 2 95 7 3 80 8 3 85 9 3 79

–需求:依据班级分组,显示每一个班的英语成绩排名

–预期结果:

id classes score rank ———– ———– ————————————— 3 1 76 1 1 1 89 2 2 1 90 3 4 2 69 1 5 2 79 2 6 2 95 3 9 3 79 1 7 3 80 2 8 3 85 3

–SQL脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT *, Row_Number() OVER (partition by classes ORDER BY score desc) rank FROM student;

–查询t_test表中,callid字段没有反复过的数据,效率高过group by having count

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select t.*, t.rowid
  from t_test t
 where t.rowid not in (select rid
                         from (select t2.rowid rid,
                                      row_number() over(partition by t2.callid order by t2.rowid desc) m
                                 from t_test t2)
                        where m <> 1)
   and t.rowid not in (select rid
                         from (select t2.rowid rid,
                                      row_number() over(partition by t2.callid order by t2.rowid asc) m
                                 from t_test t2)
                        where m <> 1);

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116265.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)/ ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY CO
ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法      今天在使用多字段去重时,由于某些字段有多种可能性,只需根据部分字段进行去重,在网上看到了rownumber() over(partition by col1 order by col2)去重的方法,很不错,在此记录分享下: ---- row_number() OVER ( PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而
学到老
2018/03/16
9420
ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)/  ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY CO
hive开窗函数-row_number
Hive 中的 row_number 函数是一个非常有用的窗口函数,它会对查询结果进行编号,并按照指定的排序方式对这些编号进行排序。在本文中,我们将介绍 row_number 函数的语法、样例及常用应用场景。
数据仓库晨曦
2024/01/08
1.4K0
hive开窗函数-row_number
SQL笔试50题(上)
本节内容,我们使用在入门内容部分介绍的在线SQL平台sql fiddle进行测试。
fireWang
2020/02/18
8200
8c 数据库,MySQL数据库5.8以上与以下版本,Oracle数据库实现row_number() over(partition by 分组列 order by 排序列 desc)
有一个日志表,里面有很多的数据,每一个数据都有一个创建时间,都有一个任务ID,一个任务有n多个日志,现在我想要拿到任务的最新的前几个日志,那么如何一个sql 就查询到
一写代码就开心
2023/02/27
8840
详述 SQL 中的 distinct 和 row_number() over() 的区别及用法「建议收藏」
在咱们编写 SQL 语句操作数据库中的数据的时候,有可能会遇到一些不太爽的问题,例如对于同一字段拥有相同名称的记录,我们只需要显示一条,但实际上数据库中可能含有多条拥有相同名称的记录,从而在检索的时候,显示多条记录,这就有违咱们的初衷啦!因此,为了避免这种情况的发生,咱们就需要进行“去重”处理啦,那么何为“去重”呢?说白了,就是对同一字段让拥有相同内容的记录只显示一条记录。
全栈程序员站长
2022/09/09
1.7K0
详述 SQL 中的 distinct 和 row_number() over() 的区别及用法「建议收藏」
SQL | 窗口函数 row number + partition by 排序
今天实习学到了一个很牛逼的sql函数,而且解决了一个之前面试头条时候的SQL问题!(也知道了为啥头条挂了…毕竟当时SQL做错了)
全栈程序员站长
2022/09/02
5210
[1008]row_number() over(partition by order by )使用说明书
来源:https://blog.csdn.net/farxix/article/details/79784608
周小董
2021/06/29
9440
Oracle-分析函数之排序值rank()和dense_rank()
在9i版本之前,只有分析功能(analytic ),即从一个查询结果中计算每一行的排序值,是基于order_by_clause子句中的value_exprs指定字段的。   其语法为:
小小工匠
2021/08/16
6710
一文学完所有的Hive Sql(两万字最全详解)
lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据,在此基础上可以对拆分的数据进行聚合,lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一行或者多行,lateral view在把结果组合,产生一个支持别名表的虚拟表。
五分钟学大数据
2021/04/02
3.1K0
Oracle-分析函数之排序后顺序号row_number()
【功能】表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的) row_number() 返回的主要是“行”的信息,并没有排名.
小小工匠
2021/08/16
5000
Hive补充之窗口函数
窗口函数 1、hive窗口函数语法 hive中的窗口函数over() ,over()窗口函数的语法结构
Maynor
2021/04/09
1.1K0
Oracle 行列转置
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53906321
用户1148526
2019/05/25
1.6K0
数据分析EPHS(11)-详解Hive中的排序函数
本篇主要来介绍一下hive中三个常用的排序函数row_number(),rank()和dense_rank()。
石晓文
2020/03/25
2.2K0
sql功底展示
功能性sql /**ziping**/ SELECT a. NAME, a.REGION_CITY_NAME, a.REGION_DISTRICT_NAME, a.LAST_MODIFIED_DATE_, b.LAST_MODIFIED_DATE_, c.LAST_MODIFIED_DATE_, d.LAST_MODIFIED_DATE_ FROM ( SELECT selff. NAME, selff.REGION_CIT
用户5166330
2019/04/16
4780
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
语法格式:row_number() over(partition by 分组列 order by 排序列 desc)
全栈程序员站长
2022/08/10
1.7K0
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
MySQL中的ROW_NUMBER窗口函数简单了解下
ROW_NUMBER() 是 MySQL8引入的窗口函数之一,它为查询结果集中的每一行分配一个唯一的顺序号(行号)。这个顺序号是基于窗口函数的 ORDER BY 子句进行排序的,可以根据指定的排序顺序生成连续的整数值。
codetrend
2024/11/24
2.6K0
SQL中row_number() over(partition by)详解「建议收藏」
ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号。在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也需要专门一列用于预先排序以便于进行编号
全栈程序员站长
2022/07/02
9020
SQL中row_number() over(partition by)详解「建议收藏」
最强最全面的Hive SQL开发指南,超四万字全面解析!
hive -S -e 'select table_cloum from table' -S,终端上的输出不会有mapreduce的进度,执行完毕,只会把查询结果输出到终端上。
五分钟学大数据
2021/12/02
7.7K0
最强最全面的Hive SQL开发指南,超四万字全面解析!
常见大数据面试SQL-查询每个学科第三名的学生的学科成绩总成绩及总排名
有学生成绩表,包含学生姓名、学科、成绩三个字段,请用一条SQL查询出每个学科排名第三名的学生,他的学科成绩、总成绩、以及总排名。
数据仓库晨曦
2024/07/12
2240
常见大数据面试SQL-查询每个学科第三名的学生的学科成绩总成绩及总排名
模拟 ROW_NUMBER() 函数
MySQL 在 8.0 的版本推出了窗口函数,我们可以很方便地使用 row_number() 函数生成序号。
白日梦想家
2020/07/20
1.1K0
模拟 ROW_NUMBER() 函数
推荐阅读
相关推荐
ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)/ ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY CO
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文