SQL

DENSE_RANK

DENSE_RANK در SQL: توضیح جامع با مثال

DENSE_RANK یک تابع پنجره در SQL است که برای رتبه بندی ردیف ها در یک مجموعه نتایج بر اساس یک ستون خاص استفاده می شود. این تابع با اختصاص رتبه های متوالی به ردیف ها، بدون هیچ گونه شکاف در رتبه ها، با تابع RANK() تفاوت دارد. به عبارت دیگر، DENSE_RANK** به ردیف هایی که مقادیر یکسانی دارند، رتبه یکسانی اختصاص می دهد**، در حالی که RANK() ممکن است در این شرایط رتبه ها را پرش دهد.

نحو:

SQL
DENSE_RANK()
    OVER (
        PARTITION BY ستون_پارتیشن
        ORDER BY ستون_ترتیب
    )
  • PARTITION BY: این بخش مجموعه نتایج را به پارتیشن های مجزا تقسیم می کند. رتبه بندی در هر پارتیشن به طور جداگانه انجام می شود.
  • ORDER BY: این بخش ترتیب ردیف ها را در هر پارتیشن تعیین می کند. رتبه ها بر اساس این ترتیب اختصاص داده می شوند.

مثال:

فرض کنید جدولی به نام sales داریم که شامل ستون های customer_id، product_id و quantity است. می خواهیم رتبه هر محصول را برای هر مشتری بر اساس مقدار فروش (quantity) بدست آوریم.

SQL
SELECT
    customer_id,
    product_id,
    quantity,
    DENSE_RANK() OVER (
        PARTITION BY customer_id
        ORDER BY quantity DESC
    ) AS product_rank
FROM sales;

در این مثال، نتایج به شرح زیر خواهد بود:

customer_id product_id quantity product_rank
۱ ۱۰۱ ۱۰۰ ۱
۱ ۱۰۲ ۵۰ ۲
۱ ۱۰۳ ۲۵ ۳
۲ ۲۰۱ ۷۵ ۱
۲ ۲۰۲ ۲۵ ۲
۲ ۲۰۳ ۲۵ ۲

همانطور که مشاهده می شود، محصولاتی که مقدار فروش یکسانی دارند، رتبه یکسانی را دریافت می کنند.

نکات:

  • DENSE_RANK() می تواند برای رتبه بندی ردیف ها در سناریوهای مختلف، مانند شناسایی مشتریان برتر یا محصولات پرفروش، مفید باشد.
  • DENSE_RANK() را می توان با سایر توابع پنجره مانند FIRST_VALUE() یا LAST_VALUE() برای تجزیه و تحلیل بیشتر داده ها ترکیب کرد.
  • برای اطلاعات بیشتر در مورد توابع پنجره در SQL، به مستندات مربوط به سیستم مدیریت پایگاه داده خود مراجعه کنید.

منابع:

۵/۵ ( ۱ امتیاز )
نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا