博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ROW_NUMBER() OVER函数运用
阅读量:6893 次
发布时间:2019-06-27

本文共 1595 字,大约阅读时间需要 5 分钟。

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

PARTITION BY:相当于数据库中的group by

说明:row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值表示每组排序后的顺序编号(从1开始,组内连续的唯一的编号)

--新建表Table_A

create table Table_A(name varchar(8),Subject varchar(8),Grade int)

insert into Table_A values('小A','数学',90)
insert into Table_A values('小A','语文',79)
insert into Table_A values('小A','英语',88)
insert into Table_A values('小B','数学',99)
insert into Table_A values('小B','语文',76)
insert into Table_A values('小B','英语',82)
insert into Table_A values('小C','数学',78)
insert into Table_A values('小C','语文',67)
insert into Table_A values('小C','英语',81)
insert into Table_A values('小D','数学',93)
insert into Table_A values('小D','语文',75)
insert into Table_A values('小D','英语',84)

--原始表

select * from Table_A

name Subject Grade
小A 数学 90
小A 语文 79
小A 英语 88
小B 数学 99
小B 语文 76
小B 英语 82
小C 数学 78
小C 语文 67
小C 英语 81
小D 数学 93
小D 语文 75
小D 英语 84

--执行以下语句后

select ROW_NUMBER() OVER(PARTITION BY name order by Grade desc) as id,name,Subject,Grade from Table_A

id name Subject Grade
1 小A 数学 90
2 小A 英语 88
3 小A 语文 79
1 小B 数学 99
2 小B 英语 82
3 小B 语文 76
1 小C 英语 81
2 小C 数学 78
3 小C 语文 67
1 小D 数学 93
2 小D 英语 84
3 小D 语文 75

--根据字段name分组,Grade排序

--提取成绩中的最大值,可用以下语句

select * from

(
    select ROW_NUMBER() OVER(PARTITION BY name order by Grade desc) as id,name,Subject,Grade from Table_A
)TT where id = 1

--每名学生,只显示前2单成绩,修改代码为以下即可

select * from

(
    select ROW_NUMBER() OVER(PARTITION BY name order by Grade desc) as id,name,Subject,Grade from Table_A
)TT where id between 1 and 2

 

转载于:https://www.cnblogs.com/hbwy/p/4914155.html

你可能感兴趣的文章
Ajax实现登陆并友好提示错误信息
查看>>
第1周小组博客作业——1702班1组
查看>>
思考线上如何既保证不影响查询,又能做更新操作
查看>>
python 10day--python 的基本数据类型
查看>>
HTTP无状态什么意思?
查看>>
FFmpeg简易播放器的实现-音视频同步
查看>>
洛谷p1156 垃圾陷阱(蒟蒻手把手教你用01背包把这道题复杂化)
查看>>
7.3 进制转换
查看>>
初始Ajax
查看>>
[杂记]如何在ppt里插入高亮代码
查看>>
Android中高效的显示图片之二——在非UI线程中处理图片
查看>>
PV、UV、IP之间的区别与联系
查看>>
ssh 操作 esxi 基本命令
查看>>
调用HtmlTestRunner生成测试报告为空
查看>>
最优装载(贪心)
查看>>
DAY10-MYSQL数据类型
查看>>
输出m的表格
查看>>
【学时总结】◆学时·VII◆ 高维DP
查看>>
帧动画
查看>>
rimraf --A deep deletion module for node (like `rm -rf`)
查看>>