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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

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

    假设有一个表,SQL语句如下:
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语句如下:
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

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


本文转自银河使者博客园博客,原文链接http://www.cnblogs.com/nokiaguy/archive/2009/11/03/1594919.html如需转载请自行联系原作者


银河使者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
2月前
|
SQL
sql server模糊查询、分组
sql server模糊查询、分组
13 1
|
5月前
|
SQL 大数据 HIVE
每天一道大厂SQL题【Day10】电商分组TopK实战
每天一道大厂SQL题【Day10】电商分组TopK实战
33 0
|
7天前
T-sql 高级查询( 5*函数 联接 分组 子查询)
T-sql 高级查询( 5*函数 联接 分组 子查询)
|
4月前
SQL-分组查询
SQL-分组查询
|
4月前
|
SQL 自然语言处理
leecode-SQL-1484-按日期分组销售产品
leecode-SQL-1484-按日期分组销售产品
28 0
|
4月前
|
SQL
四、SQL分组查询
四、SQL分组查询
34 0
|
4月前
|
SQL 自然语言处理 数据挖掘
「SQL面试题库」 No_115 按日期分组销售产品
「SQL面试题库」 No_115 按日期分组销售产品
|
5月前
|
关系型数据库 MySQL 数据库
Mysql数据库 6.SQL语言 分组、分页查询
Mysql数据库 6.SQL语言 分组、分页查询
60 2
|
6月前
|
SQL 关系型数据库 MySQL
sql处理重复的列,更好理清分组和分区
sql处理重复的列,更好理清分组和分区
51 0
|
7月前
|
SQL 关系型数据库 Serverless
深入理解 SQL 分组查询
SQL 是结构化查询语言(Structured Query Language)的缩写,是用于管理关系型数据库的标准语言。在 SQL 中,查询是其中最重要的部分之一,通过查询,我们可以从数据库中检索所需的数据。分组查询是 SQL 查询中的一项重要功能,它允许我们对数据进行分组、聚合和汇总,以便更好地理解数据的特征和趋势。 在本文中,我们将深入探讨 SQL 中的分组查询,包括其基本语法、常用聚合函数、分组筛选条件、多重分组、分组排序等方面的内容。无论您是初学者还是有一定 SQL 基础的开发者,都将从本文中获得有关 SQL 分组查询的详细信息。
410 0