فصل هفدهم :
Ranking Functions
گروهی از توابع در اس کیو ال سرور هستند که برای رتبه بندی یا Ranking مورد استفاده قرار میگیرند به این توابع Ranking Functions می گویند.
توابع رنکینگ مقداری را بعنوان رتبه(RANK) به هر رکورد موجود در نتایج اختصاص میدهند .
RANK ()
RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )
select id,[FirstName],[LastName],[Age],rank() over(order by age desc) as 'rank' from Student
DENSE_RANK ()
DENSE_RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )
select id,[FirstName],[LastName],[Age],dense_rank() over(order by age desc) as 'rank' from Student
NTILE ()
NTILE (integer_expression) OVER ( [ <partition_by_clause> ] < order_by_clause > )
select id,[FirstName],[LastName],[Age],Ntile(3) over(order by age desc) as 'rank' from Student
می خواهیم لیست دانش اموزان بر حسب کد انها مشاهده و در کنار لیست دانش اموزان شماره ردیفی را نیز نمایش دهیم.
ROW_NUMBER
این تابع یک سری اعداد متوالی را برطبق انچه در عبارت بعدی آن ذکر میشود باز میگرداند .
select firstname ,lastname, row_number() over(order by id asc) as Radif from student
در پرانتز جلو عبارت over مشخص میکنیم که چگونه رتبه بندی انجام شود . دراینجا رتبه بندی بر حسب id هر دانش آموز می باشد بصورتی که کوچکترین id رتبه اول را دارد.
برای رتبه بندی بصورتی که بالاترین id اول باشد
select firstname ,lastname, row_number() over(order by id desc) as Radif from student
PARTITION BY
پارتیشن کدن رکوردها ، تفکیک کردن ، بخش بخش کردن ، جزء بندی
فیلم را ببینید
بسیاری از مفاهیم درفیلم اموزشی بطور مفصل شرح داده شده اند . لذا حتما فیلم آموزشی این فصل را ببینید .
مفاهیم و موضوعات این فصل عبارتند از :
-
Ranking Functions
-
RANK ()
-
DENSE_RANK ()
-
NTILE ()
-
ROW_NUMBER
-
PARTITION BY