`
seara
  • 浏览: 648642 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

在SQL Server2005/2008中对记录进行分组,并获得每组前N条记录

阅读更多

本文为原创,如需转载,请注明作者和出处,谢谢!

假设有一个表,SQL语句如下:

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->CREATE TABLE [ dbo ] . [ scan ] (
[ km ] [ int ] NULL ,
[ kh ] [ int ] NULL ,
[ cj ] [ int ] NULL
)
ON [ PRIMARY ]


其中km为科目号、kh为考生号、cj为成绩,现对km和kh进行分组,并获得每组前2条记录(按cj从高到低排序)。基本思想是为每组加一个序号列,再用where取序号小于等于2的。SQL语句如下:

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->select * from
(
select a.km,a.kh,cj,row_number() over (partition by a.km order by a.km,a.cj desc )n
from
(
select km,kh, SUM (cj)cj from scan group by km,kh)a
)b
where n <= 2 order by km,cj desc


最后得到的结果集如下图所示。




国内最棒的Google Android技术社区(eoeandroid),欢迎访问!

《银河系列原创教程》 发布

《Java Web开发速学宝典》 出版,欢迎定购

分享到:
评论

相关推荐

    SQL Server 2005入门

    例如,使用TOP关键字可以实现只查询表中的前N条记录,使用GROUP BY和HAVING可以实现数据的分组统计,而嵌套查询、集合查询和连接查询则是实现复杂查询的主要方法。 总之,SQL Server 2005入门级知识点繁多,但主要...

    SQL SERVER 分组求和sql语句

    您可能感兴趣的文章:分组后分组合计以及总计SQL语句(稍微整理了一下)MYSQL每隔10分钟进行分组统计的实现方法mysql使用GROUP BY分组实现取前N条记录的方法详解MySQL中的分组查询与连接查询语句sql server如何利用...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...

    SQLServer ntile获取每组前10%的数据

    在给定的标题和描述中,我们关注的是如何利用`NTILE`来获取每组数据的前10%。下面将详细解释`NTILE`函数的工作原理以及如何运用它来实现这个目标。 **NTILE函数详解** `NTILE(n)`函数将结果集分成n个组,每个组尽...

    sql server 2005数据查询的ppt

    在SELECT子句中,可以使用`DISTINCT`去除重复行,`TOP n`限制返回的记录数,例如`TOP 5`将返回前五条记录。`PERCENT`可以与`TOP`一起使用,表示返回百分比的记录,如`TOP 20 PERCENT`返回表中20%的记录。使用通配符`...

    SQL Server 2005 T-SQL数据查询

    在SQL Server 2005中,TOP关键字可以用来获取结果集的前n行,例如 `SELECT TOP 10 * FROM TableName`。 **排序查询**(Ordering)通过ORDER BY子句实现,决定结果集的显示顺序。例如,`SELECT * FROM TableName ...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...

    Sqlserver2008--学习笔记(自己总结)

    ### Sqlserver2008 学习笔记精要 #### 第一章 SQL Server 基础 ##### 1. T-SQL 语句基础 - **创建数据库**: 使用 `CREATE DATABASE` 语句来创建一个新的数据库。例如: ```sql CREATE DATABASE 新数据库名; ``...

    SqlServer2008--学习笔记

    在Select语句中可以使用多种子句来完成复杂的查询,如计算列、DISTINCT(消除重复记录)、BETWEEN(范围查询)、IN(值列表查询)、TOP(选取前N条记录)、ORDER BY(排序)、模糊查询、聚合函数(如SUM, COUNT等)...

    sqlserver试题含答案.doc

    在 SQL Server 数据库中,有一个表 StudentAchievement(学生成绩),它有三个字段:StudentID(varchar(8),学生编号),CourseID(varchar(10),课程编号),Achievement(int,成绩),写一条 SQL 语句,筛选出每...

    分组并排序取前N

    标题“分组并排序取前N”涉及到数据库查询中的一个重要概念,这通常指的是在SQL查询中使用`GROUP BY`、`ORDER BY`以及`LIMIT`子句来对数据进行分组、排序,并提取出每组中排名靠前的N条记录。在数据库管理中,这种...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》全面深入地介绍了Microsoft SQL Server 2008中高级T-SQL查询、性能优化等方面的内容,以及SQL Server 2008新增加的一些特性。主要内容包括SQL的基础理论、查询优化...

    SQL SERVER 2000开发与管理应用实例

    本书不但融合了作者在使用SQL Server 2000过程中遇到的各种常见问题和应用案例,还总结了作者几年来在CSDN 社区SQL Server版所解决的大量问题,面向实际项目需求,涉及不同类型的应用,能够多角度地引导读者学习相关...

    2023年SQLServer基础查询练习附答案.doc

    该语句查询了 `emp` 表中的所有记录,并按工作分组,计算每个工作的平均薪资。 连接 在 SQL Server 中,可以使用 `JOIN` 语句来连接表,例如: ```sql SELECT * FROM emp e INNER JOIN dept d ON e.DEPTNO = d....

    如何使用SQLServer表中数据操作.pptx

    在SQL Server中,对表中的数据进行操作是数据库管理的核心任务。本章主要涵盖了如何在SQL Server管理控制台中执行这些基本操作,包括查询、插入、更新和删除数据。以下是对这些知识点的详细阐述: 首先,操作表中的...

    sqlserver2005 行列转换实现方法

    结果将显示每个公司的`SqlServer2005`产品数量。 另外,如果数据库支持UNION ALL或者CASE语句,还可以通过多次聚合来达到类似的效果,但这通常不如Pivot操作简洁且高效。 在SQL Server 2005中,行转列的另一种常见...

    sqlserver面试题

    2. 在关系型数据库中,表间关系包括一对一(1:1)、一对多(1:n)和多对多(m:n),没有二对二(2:2)关系,选项C。 3. `SELECT`语句用于从表中检索数据,A选项正确。其他选项(B更新、C插入、D删除)对应的是`...

    SqlServer2000

    2. **返回表中前n条记录**:使用`TOP`关键字可以获取表中的前n条记录,例如: ```sql select top 5 * from readCategory; ``` 3. **消除重复行**:`DISTINCT`关键字用于去除查询结果中的重复行: ```sql ...

    MYSQL,SQLSERVER,ORACLE常用的函数

    根据提供的标题和描述,本文将详细介绍在MySQL、SQL Server以及Oracle数据库中常用的函数。这些函数主要分为几大类:字符串处理函数、数值处理函数、日期处理函数、转换函数以及其他一些特殊用途的函数。 ### 字符...

    SQL2008编程入门之经典源代码

    3. 主键(Primary Key):表中一个或一组列,用于唯一标识每一条记录。 4. 外键(Foreign Key):用于建立表与表之间的关联,确保数据的完整性。 二、SQL2008查询语句 1. SELECT语句:用于从表中检索数据,可以指定...

Global site tag (gtag.js) - Google Analytics