`
Luob.
  • 浏览: 1584556 次
  • 来自: 上海
社区版块
存档分类
最新评论

sql server 分组后,取每组前1条数据

阅读更多
sql 排名开窗函数 ROW_NUMBER、DENSE_RANK、RANK、NTILE属于排名函数。
排名开窗函数可以单独使用ORDER BY 语句,也可以和PARTITION BY同时使用。

PARTITION BY用于将结果集进行分组,开窗函数应用于每一组。

ODER BY 指定排名开窗函数的顺序。在排名开窗函数中必须使用ORDER BY语句


http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html

rank 跳过排名  dense_rank 继续排名
create table tb_test(name varchar(10),val int,memo varchar(20)) 
insert into tb_test values('a', 2, 'a2(a的第二个值)') 
insert into tb_test values('a', 1, 'a1--a的第一个值') 
insert into tb_test values('a', 3, 'a3:a的第三个值') 
insert into tb_test values('b', 1, 'b1--b的第一个值') 
insert into tb_test values('b', 3, 'b3:b的第三个值') 
insert into tb_test values('b', 2, 'b2b2b2b2') 
insert into tb_test values('b', 4, 'b4b4') 
insert into tb_test values('b', 5, 'b5b5b5b5b5') 
insert into tb_test values('b', 5, 'bb5') 
go

--方案1

select a.* from tb_test a where not exists(select 1 from tb_test where name = a.name and val > a.val) ;

select a.* from tb_test a,(select name,max(val) val from tb_test group by name) b where a.name = b.name and a.val = b.val order by a.name;

select a.* from tb_test a inner join (select name , max(val) val from tb_test group by name) b on a.name = b.name and a.val = b.val order by a.name 


--方案2 分组后 取每组前 2条数据
select * from (
SELECT  ROW_NUMBER()   
        over   
        (PARTITION By name order by val) as rowId,tb_test.*
FROM tb_test 
) t
where rowid <= 2

分享到:
评论

相关推荐

    SQL Server分组排序取数据的实现

    本文将深入探讨如何在SQL Server中实现分组排序并获取每组的特定行数据。 首先,我们要理解分组的概念。在SQL中,`GROUP BY`语句用于将数据根据一个或多个列进行分类,例如在示例代码中,我们根据`A.DocNo`, `A1....

    sqlserver+group by分组查询分页存储过程

    `GROUP BY`子句在SQL查询语言中用于将数据表中的行归类为一组,通常与聚合函数如`COUNT()`, `SUM()`, `AVG()`, `MAX()`, 和 `MIN()` 结合使用,以便对每一组的数据进行统计分析。例如,如果我们有一个销售记录表,并...

    SQL Server 将某一列的值拼接成字符串.docx

    在SQL Server中,将某一列的值拼接成字符串是一个常见的需求,这通常涉及到数据的格式化输出,比如创建报告或者导出数据。这个过程可以通过几种不同的方法来实现,其中包括使用FOR XML PATH子句和CONCAT函数。我们将...

    对某一字段分组后,取出另一字段最大值的所有记录

    表:t_test -------------------------------------- id(int) cost(int) des Autoid(id) -------------------------------------- 1 10 aaaa 1 1 15 bbbb 2 1 20 cccc 3 ...取每一类id中cost最大的纪录

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

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

    如何使用SQL Server来过滤数据

    在SQL Server中,过滤数据是数据分析的关键步骤,尤其在处理关系型数据库时。规范化是数据库设计的基本原则,目的是减少数据冗余,确保数据的一致性和完整性。规范化要求数据以键值关联的方式存在于不同表中,避免了...

    sql server的表分组工具

    SQL Server的表分组工具是数据库管理中的一个重要概念,它主要应用于大型的SQL Server数据库环境中,帮助管理员有效地组织和管理大量的数据库表。这样的工具能够提高工作效率,使得数据库的架构更易于理解和维护。...

    SQL SERVER 分组求和sql语句

    在SQL Server中,分组和求和是数据库查询中的核心操作,它们经常被用来对数据进行聚合,以获得更高级别的统计信息。本篇将详细解释如何使用SQL Server的`GROUP BY`语句来实现分组求和。 首先,`GROUP BY`语句是SQL...

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    SQLServer2000数据查询基础ppt和SQL查询代码

    `会按column1的值分组并计算每组的数量。 4. **排序**:ORDER BY语句用于对结果集进行排序,可以指定升序(ASC)或降序(DESC)。例如,`SELECT * FROM table_name ORDER BY column1 DESC;`将按照column1的值降序排列...

    Microsoft SQL Server 2008技术内幕:T-SQL查询.pdf

    《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威指南。T-SQL是微软SQL Server数据库管理系统的核心语言,用于数据操作、查询、存储过程编写以及...

    sqlserver中重复数据值只取一条的sql语句

    在SQL Server中,有时我们需要处理含有重复数据的表,例如,我们可能希望只保留每组重复数据中的第一条记录。在给定的标题和描述中,提到了如何编写一个SQL语句来实现这一目标。以下是对这个话题的详细解释: 首先...

    Sql Server 分组统计并合计总数及WITH ROLLUP应用

    在SQL Server中,分组统计是一项基础且重要的功能,它允许我们按照特定列的值对数据进行聚合,以便分析和汇总信息。`GROUP BY`语句是实现这一目标的关键,而`WITH ROLLUP`是扩展这个功能的一种方法,特别适用于生成...

    SQL语句分组获取记录的第一条数据的方法

    在SQL中,有时候我们需要在对数据进行分组后,从每个组中获取第一条或特定的数据。这在处理聚合数据或需要展示每个类别代表性的记录时非常有用。本篇将详细介绍如何利用SQL语句来实现这一目标,以Northwind数据库中...

    Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询.part1

    《Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询》是一部深入探讨SQL Server 2005数据库管理系统中Transact-SQL(T-SQL)查询技术的专业著作。本部分主要聚焦于如何高效、准确地在SQL Server 2005环境中...

    sqlServer考试题

    根据提供的文件信息,我们可以整理出一系列与SQL Server相关的知识点,主要涵盖了SQL Server的基本概念、数据库管理操作、查询语言(T-SQL)的使用方法及数据完整性约束等方面的内容。下面将详细解析这些知识点。 #...

    sql server 数据库 语句50条

    根据给定的SQL Server数据库语句,我们可以深入探讨与这些查询相关的知识点,这些知识点涵盖了SQL的基本操作、数据关联、聚合函数、子查询以及条件筛选等多个方面。以下是对这些语句涉及的重要知识点的详细解析: #...

    SQLServer中Partition By及row_number 函数使用详解

    例如,如果我们有一个包含多个分类(`corp_name`)和提交时间(`submit_time`)的数据表,要查询每个分类的最新记录,`GROUP BY` 无法直接实现,因为我们需要的是每个分类的第一条记录,而不是每组的聚合值。...

    SQL Server 文件组使用心得

    在SQL Server中,文件组是一种逻辑性分组,类似于Java中的包概念。文件组的主要作用是管理数据库内的数据文件,通过将不同的数据文件组织到不同的文件组中,可以实现更高效的数据管理和优化。 #### 二、文件组与...

Global site tag (gtag.js) - Google Analytics