计算值在分区中的排位。对于并列的值,DENSE_RANK 函数不会在排名序列中留出空位。
DENSE_RANK( ) OVER ( window-spec )
window-spec:请参见下面的注释部分
INTEGER
可以在函数语法中指定 window-spec 的元素(内置),也可以将这些元素与 SELECT 语句中的 WINDOW 子句一并加以指定。作为窗口函数使用时,必须指定 ORDER BY 子句,还可以指定 PARTITION BY 子句,但不能指定 ROWS 或 RANGE 子句。可在 WINDOW 子句的 window-spec 定义中获取更多信息。
SQL/2008 DENSE_RANK 函数是可选 SQL/2008 语言功能 T612 "高级 OLAP 操作" 的一部分。
SQL Anywhere 支持 SQL/2008 语言功能 F441 "扩展集函数支持",它允许窗口函数的操作数是列引用以外的任意表达式。
SQL Anywhere 不支持可选的 SQL/2008 功能 F442 "集函数中的混合列引用"。SQL Anywhere 不允许集合函数参数既含有来自包含 DENSE_RANK 函数的查询块的列引用,又含有外部引用。有关示例内容,请参见AVG 函数 [Aggregate]。
以下示例返回一个结果集,它提供 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 |
400 | Blaikie | 54900.000 | NY | 7 |
100 | 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 |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |