`
nannan408
  • 浏览: 1784214 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sqlserver 分组取前n条记录

 
阅读更多
1.前言。
    这个有两种方法.1是用in,2是用row_number(),可根据情况来用。两种都可以。
2.举例。
方法1:
select  a.* from table1  a  where a.column1 in (select max(column1) from table1 group by a.column2,column3) 


方法2:
with nyr as (
select NYR,QYZX_DM,FXSP_XH,SPBM_DLJ,WBSP_GG,JGLX,JZJG,MAX(SJGX_SJ),
ROW_NUMBER() over (partition by nyr order by nyr) as 'rowno'

from WD_O_T_IC_SPSJ_FX 
where rowno=1
group by NYR,QYZX_DM,FXSP_XH,SPBM_DLJ,WBSP_GG,JGLX,JZJG 
order by NYR,QYZX_DM,FXSP_XH,SPBM_DLJ,WBSP_GG,JGLX,MAX(SJGX_SJ) desc
)
select *
from nyr
where rowno = 1

方法2的补充,带有总数的分页代码
with nyr as (   
select   phone,userid,(counts26+counts27) as times,mobilearea,
ROW_NUMBER() over ( order by userid,phone desc)  as 'rowno'  
  
from a  group  by phone,userid,(counts26+counts27),mobilearea having (counts26+counts27)>0


)   
select *
from nyr   
where rowno >1 and rowno<100000  
union all  (select ''1'',''1'',''1'',isnull((select max(rowno)  from nyr),0))

3.补充说明。
这里主要说下ROW_NUMBER()的用法。
ROW_NUMBER()实现了不用分组,自动在查询结果内部分组,求行号的功能。
如果"ROW_NUMBER() over()" 的括号内有partition by ,那么可以内部分组。如果没有,则是按照1,2,3的顺序依次获得行号。

0
0
分享到:
评论

相关推荐

    SQL SERVER 分组求和sql语句

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

    分组并排序取前N

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

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

    总结起来,`NTILE`函数是SQL Server中一个强大的工具,它可以让我们根据特定条件对数据进行分组和采样。结合`WHERE`子句,我们可以轻松地获取每个组的前N%数据,这对于大数据分析和查询优化有着显著的意义。在实际...

    数据库SQLServer2005

    ### 数据库SQL Server 2005:SQL语句与常用操作详解 #### 一、创建数据库和表 **创建数据库:** ```sql CREATE DATABASE cccsk; ``` 以上命令用于创建一个名为`cccsk`的新数据库。 **创建表:** ```sql CREATE ...

    SQL Server 笔试试题

    【SQL Server 笔试试题】涉及的SQL Server是微软公司的一款关系型数据库管理系统,它在IT面试中常常作为考察的重点。下面将详细解释题目中涉及的一些核心知识点: 1. **算法的时间复杂度与空间复杂度**:算法的时间...

    SQL Server T-SQL高级查询

    - **TOP关键字**:`TOP n`表示返回前n条记录,其中n是需要的记录数。 - **列重命名**:`SELECT column_name AS alias_name`可以给列起别名,便于阅读和理解。 - **表重命名**:使用`FROM table_name AS alias_table_...

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

    中文版SQL Server 2000开发与管理应用实例-目录: 第 1 章 安装和配置SQL Server 1 1.1 SQL Server的版本和版本选择 1 1.2 安装SQL Server的常见问题 3 1.3 如何理解实例 5 1.4 如何实现无值守安装 5 ...

    sqlserver试题含答案.doc

    TOP语句用于选择前n条记录,而EXCEPT语句用于排除某些记录。 二、 SQL 中游标的定义? 答:declare cursorname CURSOR for select * from table 知识点:本题考察了SQL Server中的游标定义。游标是一种特殊的指针...

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

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

    SQL Server 2005入门

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

    SQL中Group分组获取Top N方法实现可首选row_number

    在SQL查询中,当需要对分组数据进行排序并选取每组的前N个记录时,通常会使用几种不同的技术。这里我们主要讨论四种方法:游标方法、Count查询、Cross Apply方法以及Row_Number函数,并重点分析在大量数据下哪种方法...

    SQL Server 2008基础教程

    1. **TOP**:返回结果集的前N条记录。 2. **LIKE和通配符**:在WHERE子句中用于模糊匹配,通配符包括%和_。 3. **IN**:用于检查值是否在特定的列表中。 4. **BETWEEN**:用于选择介于两个值之间的数据。 5. **...

    Microsoft SQL Server常用命令_pdf

    **6.1 查询前N条记录** - **语法**: `SELECT TOP 5 col1, col2 FROM tab1;` - **说明**: 从表`tab1`中选择前5行的`col1`和`col2`两列数据。 - **应用场景**: 当需要获取表中的前几条记录时使用。 **6.2 查询指定...

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

    本文档提供了一个完整的 SQL Server 基础查询练习附答案,涵盖了数据库创建、表创建、索引创建、查询语句、排序、分组、连接、子查询等多个方面的知识点。 数据库创建 在 SQL Server 中,创建数据库可以使用 `...

    SQL Server 关于Pivot详解

    4. 由于执行步骤(3)后,原分组列中少了(包含要成为列标题的值的列),因此以剩下的列再分组,这可能会导致结果集的某条记录的透视列有多个值。 实例分析 下面是一个简单的实例,演示如何使用 Pivot 语句将学生的...

    SQL Server纵表与横表相互转换的方法

    这个SQL语句使用了CASE语句和聚合函数SUM,根据`Course`字段的值来计算每个学生的总分,然后按照`Name`进行分组,得到每个学生各科的分数。 2. **横表转纵表(Unpivot)** 横表则与纵表相反,列多行少,每个属性...

    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 新数据库名; ``...

    Sqlserver2000经典脚本

    介绍就不多说了,下边是部分目录,觉得有用的话就顶一个 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整...

    SQLServer常用关键字、数据类型和常用语法.doc

    - `TOP`:选取查询结果的前n条记录。 - `DISTINCT`:去除查询结果中的重复行。 - `UNION` 和 `UNION ALL`:合并多个查询的结果。 - `CASE`:条件语句,类似于C#的`SWITCH-CASE`结构。 3. **数据类型**: - `...

Global site tag (gtag.js) - Google Analytics