ROW_NUMBER() OVER函数运用
语法: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
ROW_NUMBER() OVER函数运用的更多相关文章
- SQL关于分页的sql查询语句 limit 和row_number() OVER函数
在做项目的时候需要些分页,用的数据库是mysql,之前看到的参考例子是用MS SQL做的,在MS SQL.ORACLE里面有ROW_NUMBER() OVER函数可以在数据库里对数据进行分组.百度后的 ...
- ROW_NUMBER() OVER函数的基本用法用法
ROW_NUMBER() OVER函数的基本用法用法 转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html 语法 ...
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
转载:https://www.cnblogs.com/alsf/p/6344197.html 1.row_number() over()排序功能: (1) row_number() over()分组排 ...
- mysql、MS SQL关于分页的sql查询语句 limit 和row_number() OVER函数
在做项目的时候需要些分页,用的数据库是MySQL,之前看到的参考例子是用MS SQL做的,在MS SQL.Oracle里面有ROW_NUMBER() OVER函数可以在数据库里对数据进行分组.百度后的 ...
- ROW_NUMBER() OVER函数的基本用法,也可用于去除重复行
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW ...
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by (转)
1.row_number() over()排序功能: (1) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排 ...
- 总结distinct、group by 、row_number()over函数用法及区别
distinct和group by 是一样的,查询去重,只能是全部重复的,也可以理解为针对单例,因为一行有一个字段不一样,他们就会认为这两行内容是不重复的.但是使用row_number()over这个 ...
- sql ROW_NUMBER() 排序函数 (转)
1使用row_number()函数进行编号:如 select email,customerID, ROW_NUMBER() over(order by psd) as rows from QT_Cus ...
- ROW_NUMBER() OVER函数的用法
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) partition 划分,分割 --ROW_NUMBER() 就是生成一个有顺序的行 ...
- ROW_NUMBER() OVER函数的基本用法
转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html 语法:ROW_NUMBER() OVER(PARTITIO ...
随机推荐
- 我看到的最棒的Twisted入门教程!
http://www.douban.com/note/232204441/ http://www.cnblogs.com/sevenyuan/archive/2010/11/18/1880681.ht ...
- 「要买车网」免费获取汽车电商要买车网购车优惠券 - 持续更新(2016-03-12)www.fortunelab.cn
汽车电商要买车网简介 “要买车”(www.yaomaiche.com)网站是上海运图投资有限公司旗下网站,是首家真正打通交易闭环的汽车电商网站,由中国电子商务成功探索者——卜广齐于2014年10月在上 ...
- oracle11g 创建id自增长监听器的步骤与问题
首先,我们通过sql/plus先建个TEST表 sql语句: CTEATE TABLE TEST( ID NUMBER, NAME VARCHAR2(20), PRIMARY KEY(ID) ); 通 ...
- Spring MVC参数注入注意事项
1.类参数名不能出现‘name’ 2.需提供默认的无参构造
- JS点击事件的重叠处理(多个点击事件出现冲突)
最近开发遇见了一个这个样的情况,一个button在一个div中,点击buton是一个事件,点击大的div也是一个事件,但是由于button在div中,点击button会把两个事件都执行了,但是我们想点 ...
- thinkphp5 IIS7.5 隐藏index.php的方法
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.we ...
- Java--Jackson转换Date,Timestamp 到格式化字符串
package com.diandaxia.test; import java.sql.Timestamp; import java.util.Date; /** * Created by del-b ...
- 20165203《Java程序设计》第七周Java学习总结
20165203<Java程序设计>第七周Java学习总结 教材学习内容总结 第11章 JDBC与MySQL数据库 MySQL数据库管理系统 MySQL数据库管理系统,简称MySQL,是世 ...
- 34、疯狂java讲义第三版
内容中包含 base64string 图片造成字符过多,拒绝显示
- 一步一步学习IdentityServer3 (10)
在某些服务器环境下 identityserver3 会闹情绪, 比如在google浏览器下授权失败(陷入死循环) 查了很多资料好像然并卵 Microsoft.Owin.Security.Notific ...