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 all
Select ۱۰۰۰ as Salary union all
Select ۱۰۰۰ as Salary union all
Select ۲۰۰۰ as Salary union all
Select ۳۰۰۰ as Salary union all
Select ۳۰۰۰ as Salary union all
Select ۸۰۰۰ as Salary union all
Select ۹۰۰۰ as Salary) A
----------------------------
RowNum  Salary  Rnk DenseRnk
----------------------------
۱       ۱۰۰۰    ۱   ۱
۲       ۱۰۰۰    ۱   ۱
۳       ۱۰۰۰    ۱   ۱
۴       ۲۰۰۰    ۴   ۲
۵       ۳۰۰۰    ۵   ۳
۶       ۳۰۰۰    ۵   ۳
۷       ۸۰۰۰    ۷   ۴
۸       ۹۰۰۰    ۸   ۵
Categories: Data
X