توضیحات
این تابع رنک مقدار در گروه خود را میدهد، این تابع بسیار شبیه به تابع DENSE_RANK است با این تفاوت که اگر سطرهای مشابه وجود داشته باشد این تابع به صورت مجزا به آنها نگاه میکند.دستور
تابع RANK به صورت زیر نوشته میشود:
1 |
RANK( expr1 [, expr2, ... expr_n ] ) WITHIN GROUP ( ORDER BY expr1 [, expr_2, ... expr_n ] ) |
مثال
مثالی از خروجی تابع RANK و DENSE_RANK را مشاهده میکنیم:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 |
Select ROW_NUMBER() over (order by Salary) as RowNum, Salary, RANK() over (order by Salary) as Rnk, DENSE_RANK() over (order by Salary) as DenseRnk from ( Select 1000 as Salary union all Select 1000 as Salary union all Select 1000 as Salary union all Select 2000 as Salary union all Select 3000 as Salary union all Select 3000 as Salary union all Select 8000 as Salary union all Select 9000 as Salary) A ---------------------------- RowNum Salary Rnk DenseRnk ---------------------------- 1 1000 1 1 2 1000 1 1 3 1000 1 1 4 2000 4 2 5 3000 5 3 6 3000 5 3 7 8000 7 4 8 9000 8 5 |