Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 函数 » SQL 函数 (A-D)

 

DENSE_RANK 函数 [Ranking]

计算值在分区中的排位。对于并列的值,DENSE_RANK 函数不会在排名序列中留出空位。

语法
DENSE_RANK( ) OVER ( window-spec )
window-spec:请参见下面“注释”部分的说明
返回值

INTEGER

注释

可以在函数语法中指定 window-spec 的元素(内置),也可以将这些元素与 SELECT 语句中的 WINDOW 子句一并加以指定。作为窗口函数使用时,必须指定 ORDER BY 子句,还可以指定 PARTITION BY 子句,但不能指定 ROWS 或 RANGE 子句。请参见WINDOW 子句中提供的 window-spec 定义。

有关在 SELECT 语句中使用窗口函数的详细信息(包括工作示例),请参见窗口函数

另请参见
标准和兼容性
  • SQL/2003   SQL/OLAP 特性 T612。

示例

以下示例返回一个结果集,它提供 Utah 和 New York 州雇员薪水的排位。尽管在返回的结果集中包含 19 条记录,但只列出了 18 个排位,因为在列表中第 7 名职员与第 8 名具有相同的薪水而并列第 7 位。因为 DENSE_RANK 函数不会在排位中留出空位,所以第 9 名雇员的排位为 '8',而不是 '9'。

SELECT DepartmentID, Surname, Salary, State,
DENSE_RANK() OVER (ORDER BY Salary DESC) AS SalaryRank
FROM Employees 
WHERE State IN ('NY','UT');

以下是该结果集:

DepartmentID Surname Salary State SalaryRank
100 Shishov 72995.000 UT 1
100 Wang 68400.000 UT 2
100 Cobb 62000.000 UT 3
400 Morris 61300.000 UT 4
300 Davidson 57090.000 NY 5
200 Martel 55700.000 NY 6
100 Blaikie 54900.000 NY 7
400 Diaz 54900.000 UT 7
100 Driscoll 48023.000 UT 8
400 Hildebrand 45829.000 UT 9
100 Whitney 45700.000 NY 10
100 Guevara 42998.000 NY 11
100 Soo 39075.000 NY 12
200 Goggin 37900.000 UT 13
400 Wetherby 35745.000 NY 14
400 Ahmed 34992.000 NY 15
500 Rebeiro 34576.000 UT 16
300 Bigelow 31200.000 UT 17
500 Lynch 24903.000 UT 18