RANK
توضیحات
این تابع رنک مقدار در گروه خود را میدهد، این تابع بسیار شبیه به تابع DENSE_RANK است با این تفاوت که اگر سطرهای مشابه وجود داشته باشد این تابع به صورت مجزا به آنها نگاه میکند.
دستور
تابع RANK به صورت زیر نوشته میشود:
| ۱ | RANK( expr۱ [, expr۲, ... expr_n ] ) WITHIN GROUP ( ORDER BY expr۱ [, expr_۲, ... expr_n ] ) |
.
مثال
مثالی از خروجی تابع RANK و DENSE_RANK را مشاهده میکنیم:
| ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹ ۲۰ ۲۱ ۲۲ ۲۳ |
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 ۱۰۰۰ as Salary union allSelect ۱۰۰۰ as Salary union allSelect ۱۰۰۰ as Salary union allSelect ۲۰۰۰ as Salary union allSelect ۳۰۰۰ as Salary union allSelect ۳۰۰۰ as Salary union allSelect ۸۰۰۰ as Salary union allSelect ۹۰۰۰ as Salary) A----------------------------RowNum Salary Rnk DenseRnk----------------------------۱ ۱۰۰۰ ۱ ۱۲ ۱۰۰۰ ۱ ۱۳ ۱۰۰۰ ۱ ۱۴ ۲۰۰۰ ۴ ۲۵ ۳۰۰۰ ۵ ۳۶ ۳۰۰۰ ۵ ۳۷ ۸۰۰۰ ۷ ۴۸ ۹۰۰۰ ۸ ۵ |
