MS-SQLServer over partition by的使用
2010-04-16 14:55
477 查看
临下班时一个朋友问我一个问题,他想实现一个分组后统计的功能,比如一Class列为GroupBy对象,检索之后希望能对这个分组结果再来个统计,知道一下输入各个Class的Record各有多少条,如下图所示(环境:MSSQL-2008):
坦白的说,以前真没搞过这样的示例,但想到用ROW_NUMBER函数,别的不太了解,就自己查资料试了试,还真给弄出来了。今天有闲,把这个记下来。
SQL语句:
Select Top 10
b.Class, RowCnt = ROW_NUMBER() OVER(PARTITION BY b.Class ORDER BY Id ASC)
From Info a,Candidate b
Where a.Id = b.Id
这个SQL没什么好解释的,唯一想提醒的是PARTITION
BY的对象是想分组的那列。
注释:
row_number() over(partition by ... order by ...)
:分组排序功能
坦白的说,以前真没搞过这样的示例,但想到用ROW_NUMBER函数,别的不太了解,就自己查资料试了试,还真给弄出来了。今天有闲,把这个记下来。
SQL语句:
Select Top 10
b.Class, RowCnt = ROW_NUMBER() OVER(PARTITION BY b.Class ORDER BY Id ASC)
From Info a,Candidate b
Where a.Id = b.Id
这个SQL没什么好解释的,唯一想提醒的是PARTITION
BY的对象是想分组的那列。
注释:
row_number() over(partition by ... order by ...)
:分组排序功能
相关文章推荐
- sql server row_number() over(partition by grower_pk order by a.pk_id desc)
- 关于SQL的over partition by 开窗语句在分页和统计中的使用总
- 使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和解密
- SQL 分组后返回序号(ROW_NUMBER () OVER(PARTITION BY order_no ORDER BY START_Time ASC 的使用方法)
- OVER(PARTITION BY)的使用
- 如何使用Oracle SQLDeveloper 中连接MS SQLServer和MySQL数据库
- 使用unidac 在linux 上无驱动直接访问MS SQL SERVER
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
- JSP中使用JDBC驱动访问MS SQL SERVER数据库的例子
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- 在Delphi中使用MS SQL Server ,MS Access遇到的问题
- MS Sql Server临时表和游标的使用小总结
- MS SQL SERVER 2005 中游标的使用
- MS SQL Server 2000 游标的使用方法
- Oracle之sum / over / partition by / order by联合使用
- MS SQLSERVER使用问题总结
- 如何使用Oracle SQLDeveloper 中连接MS SQLServer和MySQL数据库
- SQL中 OVER(PARTITION BY)
- 《Microsoft SQL Server 2008 Analysis Services Step by Step》学习笔记八:使用帐户智能(上)