وظيفة SQL DENSE_RANK()

Wzyft Sql Dense Rank



تعد وظائف النافذة ميزة مهمة في SQL وتلعب دورًا أساسيًا في حسابات البيانات المعقدة والعمليات في قواعد بيانات SQL. إحدى الوظائف الموجودة في وظائف نافذة SQL هي الدالة الكثيفة ().

تتيح لنا الدالة DENSE_RANK()‎ تعيين تصنيف فريد لكل صف ضمن مجموعة النتائج بناءً على القيم الموجودة في عمود محدد آخر. إنها تشبه إلى حد كبير الدالة rank() ولكن مع اختلافات طفيفة في كيفية تعامل الدالة مع السجلات المكررة.

في هذا البرنامج التعليمي، سوف نستكشف كيفية عمل هذه الوظيفة، وبناء الجملة المقدم، وكيف يمكننا استخدامها في قاعدة البيانات.







كيف تعمل

لنبدأ بشرح كيفية عمل هذه الوظيفة. من الجيد أن نضع في اعتبارنا أن الوظيفة عالية المستوى، ولا يمكننا شرح التنفيذ الأساسي.



تعمل الوظيفة عن طريق تعيين رتبة لكل صف في مجموعة النتائج بدءًا من المرتبة 1 وزيادة بمقدار 1 لكل قيمة فريدة في الأعمدة.



يتم تعيين الصفوف ذات القيم المماثلة (التكرارات) في الأعمدة المحددة بنفس الترتيب ويتم تعيين الصف التالي بقيمة مختلفة مع الترتيب التالي المتاح، دون أي فجوات.





كما ذكرنا، فإن الدالة لا تترك أي فجوات حيث توجد قيم مكررة مما يجعلها مختلفة عن الدالة rank().

الاستخدام الشائع للدالة كثيفة_رانك () هو إجراء عمليات التصنيف. على سبيل المثال، يمكننا استخدامه للعثور على أفضل سجلات N، وما إلى ذلك.



بناء جملة الوظيفة:

فيما يلي وصف بناء جملة الدالة الكثيفة () :

DENSE_RANK() على (

[التقسيم حسب Partition_expression، ... ]

طلب حسب نوع_التعبير [ASC | ديسك]، ...

)

في بناء الجملة المحدد:

  1. نبدأ بالوظيفة الكثيفة () الكثيفة نفسها.
  2. تشير جملة OVER إلى بداية مواصفات وظيفة النافذة. يحدد هذا كيفية تطبيق الترتيب ضمن مجموعة النتائج.
  3. يعد PARTITION BY Partition_expression عبارة اختيارية تسمح لنا بتقسيم المجموعة الناتجة إلى مجموعات أو أقسام بناءً على عمود واحد أو أكثر. يتم تطبيق الترتيب بشكل منفصل على كل قسم مع إعادة تعيين الترتيب في قسم جديد.
  4. يحدد التعبير ORDER BYsort_expression الترتيب الذي نرغب في استخدامه لفرز البيانات في الأقسام الناتجة.

بيانات العينة

لتوضيح كيفية استخدام الدالة كثيفة_رانك ()، فلنبدأ بجدول يحتوي على عينة من البيانات. في حالتنا، نستخدم نموذج جدول 'الطلبات' على النحو التالي:

مثال 1: استخدام دالة Dense_Rank()

يمكننا استخدام الدالةكثافة_رانك() لترتيب الأوامر الناتجة بناءً على السعر. خذ بعين الاعتبار الاستعلام المثال التالي:

يختار

رقم التعريف الخاص بالطلب،

اسم المستخدم_العميل،

المنتج_المشترى،

DENSE_RANK() على (

طلب بواسطة

قرص السعر

)price_rank

من

أوامر س؛

في المثال الموضح، نستخدم الدالة Density_rank() لترتيب البيانات بناءً على سعر الطلبات. نحن نحذف جملة PARTITION BY لأننا لا نقوم بتجميع البيانات.

الناتج الناتج هو كما يلي:

مثال 2: التقسيم حسب

يمكننا أيضًا إضافة جملة PARTITION BY لتجميع البيانات في قطاعات مختلفة، على سبيل المثال بناءً على المنتج الذي تم شراؤه.

استعلام مثال كما يلي:

يختار

رقم التعريف الخاص بالطلب،

اسم المستخدم_العميل،

المنتج_المشترى،

DENSE_RANK() على (

التقسيم حسب المنتج_المشتري

طلب بواسطة

قرص السعر

)price_rank

من

أوامر س؛

يجب أن يقوم هذا بتجميع البيانات في مجموعات مختلفة بناءً على المجموعات الناتجة وتطبيق تصنيف العناصر في كل مجموعة.

خاتمة

في هذا المنشور، تعلمنا أساسيات استخدام دالة النافذة Density_rank() والعمل معها في SQL لتعيين تصنيف للقيم بناءً على أعمدة محددة.