خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
تابع RANK در SQL server
از تابع RANK در SQL Server برای رتبه بندی مقادیر تکرار شده به گونه ای استفاده می شود که مقادیر مشابه در یک رده بندی(rank) قرار بگیرند. به عبارت دیگر ، تابع rank رتبه هر ردیف را در partition یک result set بر میگرداند.
SYNTAX تابع RANK در SQL Server بصورت زیر می باشد.
partition_by_clause ردیف های تولید شده را به دسته های مختلف تقسیم بندی می کند و اگر partition_by_clause مشخص نشده باشد ، تمام ردیف ها باید به صورت یک گروه واحد نمایش داده شوند.
اولویت Rank توسط order_by_clause تعیین می شود. وجود Order_by_clause برخلاف partition_by_clause در تابع Rank ضروری است.
حالا به سراغ یک مثال عملی از تابع Rank می رویم که ملموس تر با این تابع آشنا شوید.
به عنوان مثال جدولی با نام Employee را داریم:
در این مثال قصد داریم از تابع RANK بدون partition_by_clause استفاده کنیم.
خروجی اسکریپت فوق با تابع rank را در شکل زیر مشاهده می کنید.
حالا مثال دیگری از RANK را خواهیم داشت ولی این بار از partition_by_clause هم استفاده می کنیم.
با وجود partition_by در کوئری فوق، Result Set زیر را دریافت خواهید کرد.
SYNTAX تابع RANK در SQL Server بصورت زیر می باشد.
RANK ( ) OVER ( [partition_by_clause ] ,order_by_clause )
partition_by_clause ردیف های تولید شده را به دسته های مختلف تقسیم بندی می کند و اگر partition_by_clause مشخص نشده باشد ، تمام ردیف ها باید به صورت یک گروه واحد نمایش داده شوند.
اولویت Rank توسط order_by_clause تعیین می شود. وجود Order_by_clause برخلاف partition_by_clause در تابع Rank ضروری است.
حالا به سراغ یک مثال عملی از تابع Rank می رویم که ملموس تر با این تابع آشنا شوید.
به عنوان مثال جدولی با نام Employee را داریم:
در این مثال قصد داریم از تابع RANK بدون partition_by_clause استفاده کنیم.
SELECT EmployeeID, EmployeeName, Gender, Location,
RANK() OVER (order by Gender DESC)AS Rank
FROM Employee;
خروجی اسکریپت فوق با تابع rank را در شکل زیر مشاهده می کنید.
حالا مثال دیگری از RANK را خواهیم داشت ولی این بار از partition_by_clause هم استفاده می کنیم.
SELECT EmployeeID, EmployeeName, Gender, Location,
RANK() OVER (partition by Location, order by Gender DESC)AS Rank
FROM Employee;
با وجود partition_by در کوئری فوق، Result Set زیر را دریافت خواهید کرد.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: