CREATE TABLE test ( a INT, b INT, c CHAR ) INSERT INTO test VALUES(1,3,'E') INSERT INTO test VALUES(2,4,'A') INSERT INTO test VALUES(3,2,'D') INSERT INTO test VALUES(3,5,'B') INSERT INTO test VALUES(4,2,'C') INSERT INTO test VALUES(2,4,'B')
a b c
----------- ----------- ----
1 3 E
2 4 A
3 2 D
3 5 B
4 2 C
2 4 B
(6 行受影响)
1、整个结果集是一个分组,以a进行排名
a b c rank
----------- ----------- ---- --------------------
1 3 E 1
2 4 A 2
2 4 B 2
3 2 D 4
3 5 B 4
4 2 C 6
(6 行受影响)
2、整个结果集是一个分组,以b进行排名
a b c rank
----------- ----------- ---- --------------------
3 2 D 1
4 2 C 1
1 3 E 3
2 4 A 4
2 4 B 4
3 5 B 6
(6 行受影响)
3、以a,b进行分组,在每个组内以b进行排名。分了5个组,第2行跟第3行是一个组,其他的每行是一个组。在第2行与第3行的组内以b排名,并列为1
a b c rank
----------- ----------- ---- --------------------
1 3 E 1
2 4 A 1
2 4 B 1
3 2 D 1
3 5 B 1
4 2 C 1
(6 行受影响)
4、以a,b进行分组,在每个组内以c进行排名。分了5个组,第2行跟第3行是一个组,其他的每行是一个组。在第2行与第3行的组内以c排名,由于c列一个是A,一个是B,所以Rank分别为1、2。
a b c rank
----------- ----------- ---- --------------------
1 3 E 1
2 4 A 1
2 4 B 2
3 2 D 1
3 5 B 1
4 2 C 1
(6 行受影响)
总结:1、partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组。
2、Rank 是在每个分组内部进行排名的。
转自:http://www.cnblogs.com/mycoding/archive/2010/05/29/1747065.html
相关推荐
### 分析函数ROW_NUMBER、RANK、DENSE_RANK的用法 #### 一、ROW_NUMBER()函数 **ROW_NUMBER()** 函数是SQL Server 2005引入的一个新的窗口函数,它为每一行返回一个唯一的整数值。该函数特别适用于需要对查询结果...
根据提供的文件信息,我们可以深入探讨 SQL 服务器中的记录排序功能,特别是 `RANK()` 函数在 SQL Server 中的应用,以及如何在 Oracle 数据库中实现类似的功能。此外,我们还将涉及基于排序的操作,如更新(`UPDATE...
本文将深入探讨两种常用的排序函数:ROW_NUMBER()和RANK(),并结合实际例子来阐述它们的用法。 1. ROW_NUMBER() 函数: ROW_NUMBER() 函数为查询结果中的每一行分配一个唯一的整数,这个数字通常按照指定的排序顺序...
在本实例中,我们将深入探讨`DENSE_RANK`函数的用法,以及它与另一种排名函数`RANK`的区别。 首先,让我们了解`DENSE_RANK`函数的基本概念。`DENSE_RANK`函数在处理具有相同值的列时,会连续地分配排名。这意味着...
在这个场景中,我们将深入探讨`RANK()`和`DENSE_RANK()`以及`MIN()`和`MAX()`在`OVER (PARTITION BY ..)`中的应用。 首先,让我们来看`RANK()`和`DENSE_RANK()`。这两种函数都是用来对分区内的数据进行排名,但是...
这里我们将通过一个具体的实例来详细讲解`OVER()`函数的使用方法。 首先,我们创建一个名为`@t`的临时表,存储产品信息,包括`ProductID`、`ProductName`、`ProductType`和`Price`字段。接着,我们向`@t`中插入一些...
这四个排名函数都可以用于生成序号,但它们的用途和使用方法不同。row_number 函数可以用于实现查询表中指定范围的记录或实现分页功能,rank 函数和 dense_rank 函数用于考虑排序字段值相同的情况,ntile 函数用于将...
### over函数概述 在数据库查询语言SQL中,`over`函数是处理复杂数据分析的一个强大工具。...理解并掌握这些函数的使用方法对于提高数据分析能力至关重要。希望以上内容能帮助您更好地理解和应用这些强大的SQL特性。
这种方法使用 SQL Server 2005 独有的 RANK() OVER () 语法来生成递增的序号列。例如: ```sql SELECT RANK() OVER (ORDER BY 客户编号 DESC) AS 序号, 客户编号,公司名称 FROM 客户; GO ``` 这种方法使用 RANK() ...
### SQL Server 排名次若干种方法 在SQL Server中,对特定字段进行排序和排名是一种常见的需求。本文将详细探讨几种实现这一功能的方法,并针对不同的业务场景提供解决方案。 #### 场景概述 假设我们有一张表,...
SQL 获取顺序号的四种方法:IDENTITY、RANK、DENSE_RANK、ROW_NUMBER 在 SQL 中,获取顺序号是非常常见的操作。今天,我们将讨论四种获取顺序号的方法:IDENTITY、RANK、DENSE_RANK、ROW_NUMBER。每种方法都有其优...
在SQL Server 2005中,`ROW_NUMBER()`、`RANK()`和`DENSE_RANK()`是三种常用的排名函数,它们在处理大数据集时非常有用,尤其在数据分析和报表生成方面。这些函数都可以帮助我们根据指定的条件对数据进行排序并赋予...
ROW_NUMBER() OVER 函数的基本用法 ROW_NUMBER() OVER 函数是 SQL Server 中的一个窗口函数,用于对查询结果进行编号。该函数可以根据指定的列进行分组和排序,并为每一组记录返回一个唯一的编号。 语法: ROW_...
MS SQL 2005 中的排名函数包括 ROW_NUMBER、RANK、DENSE_RANK 和 NTILE,这四个函数可以有效地分析数据并提供排序值。下面将详细介绍每个函数的用法和示例。 一、ROW_NUMBER 函数 ROW_NUMBER 函数返回结果集分区...
在Oracle中,可以使用`v$sqlarea`视图来获取这些信息。以下是一个示例查询: ```sql SELECT sa.SQL_TEXT, sa.SQL_FULLTEXT, sa.EXECUTIONS "执行次数", ROUND(sa.ELAPSED_TIME / 1000000, 2) "总执行时间",...
在这个文档“sql语句妙用,各种sql语句的详细用法与讲解.doc”中,我们预计将深入探讨以下SQL语句的主要类别及其用法: 1. **数据查询(SELECT语句)**: - **基本查询**:从单个或多个表中选取数据,例如`SELECT ...
这里可能包括了更多高级用法,如LAG()和LEAD()函数用于访问相邻行的数据,以及累计和累计平均的计算方法,如SUM() OVER和AVG() OVER。 第三章“有序集函数”则关注在窗口操作中涉及的排序和分组功能。可能会讨论ROW...
本文将详细介绍这四个行号排序函数:`ROW_NUMBER()`、`RANK()`、`DENSE_RANK()` 和 `NTILE()` 的用法和应用场景。 #### 二、ROW_NUMBER() `ROW_NUMBER()` 函数为分区中的每一行分配一个唯一的数字。该函数对于实现...
本文将重点讨论如何使用开窗函数`OVER()`来解决分组统计的问题,以及介绍一些常见的窗口函数类型。 首先,我们来看标题中提到的需求:求出以产品类别为分组,各个分组里价格最高的产品信息。这里可以通过两种方法...