SQL--Row_Number() over()的使用
2024-09-18 06:47:56
1、语法
--over里面有两个参数
--partition by 用于分割区域 此参数可选
--order by 用于排序 此参数必有
row_number() over(partition by field,order by field desc) as num
2、例子
检索所有的数据
select * from student
2.1、只使用order by 不使用partition by 的情况
--根据分数进行排序作为一个新的索引 不会破坏主键
select name,gender,fenshu, row_number() over(order by fenshu desc) as num from dbo.PeopleInfo
2.2、两个参数都使用 的情况
--先用partition by 根据gender将数据分为两个区域,然后在不同的区域根据分数进行分别排序
select name,gender,fenshu, row_number() over(partition by Gender order by fenshu desc) as num from dbo.PeopleInfo
2.3、分别检索男女里面的最高分
--with as 生成临时表
with temp as
(
select name,gender,fenshu, row_number() over(partition by Gender order by fenshu desc) as num from student
)
--检索两个区域新索引num=1的
select * from temp where num = 1
---首先格式()不能丢 再者from后面一定要是表名 select后面如果检索的是字段那么一定要是字段名 所以()里面的数据一定要as为表名或者字段名
select * from (select name,gender,fenshu, row_number() over(partition by Gender order by fenshu desc) as num from student ) a where num = 1
3、实现分页的功能
---子查询中根据score进行排序后按照顺序生成新的含有num field的新表
---在新的table检索前十条数据作为第一页的数据
select *
from (select p.*,
row_number() over(order by score, pageindex) as num
from pagetable as p)
where num between 0 and 10
引用转载:https://www.cnblogs.com/shuangnet/archive/2013/04/12/3016898.html
最新文章
- H5坦克大战之【建造敌人的坦克】
- Linux学习日记(二)
- canvas第一天
- MySQL root密码找回
- [CareerCup] 2.3 Delete Node in a Linked List 删除链表的节点
- SVN提交.a文件的方法
- 【CodeForces】【311C】Fetch the Treasures
- SQL创建链接服务器
- Android开发之内容观察者
- andengine游戏引擎总结进阶篇1
- DICOM医学图像处理:DCMTK在VS2012中的配置
- 学习smail注入遇到的坑
- SuperMap iObject入门开发系列之六管线区域查询
- vue-cli3.0 项目如何使用sass
- NGUI 做局部2d卷轴
- Jquyer轮播带数字和提示文字
- Cocos Creator 加载和切换场景(官方文档摘录)
- linux ipv6开启的配置文件
- ElasticSearch性能优化策略【转】
- Win10 + vs2017 编译并配置tesseract4.1.0
热门文章
- [C#]使用 AltCover 获得代码覆盖率 - E2E Test 和 Unit Test
- Luogu2375 [NOI2014]动物园 (KMP)
- Java 数字转汉字
- JS判断两个数组的元素是否完全相等
- [RootersCTF2019]I_<;3_Flask-1|SSTI注入
- PHP随机图片API
- 057_末晨曦Vue技术_处理边界情况之强制更新和创建低开销的静态组件
- 这12款idea插件,能让你代码飞起来
- Linux之SElinux服务详解
- Docker实用篇