رتبة Postgres

Rtbt Postgres



في PostgreSQL ، تعتبر وظيفة الترتيب () إحدى وظائف النافذة التي تسمح لنا بتعيين رتبة لكل صف ضمن مجموعة النتائج بناءً على معايير الفرز المحددة. مثل معظم وظائف النافذة ، تعد وظيفة الترتيب مفيدة في الاستعلامات التحليلية مثل تحديد رتبة الصف التي ترتبط بالآخرين في مجموعة نتائج معينة.

يستكشف هذا البرنامج التعليمي كيفية العمل مع وظائف PostgreSQL. نستكشف أيضًا بناء جملة الدالة والمعلمات ونلقي نظرة على بعض الأمثلة العملية.

وظيفة رتبة PostgreSQL ()

يوضح ما يلي بناء جملة الدالة Rank () في PostgreSQL:







RANK () OVER (PARTITION BY partition_expression ORDER BY sort_expression [ASC | DESC])

نبدأ باستدعاء وظيفة الرتبة (). ثم نستخدم الكلمة الأساسية OVER للإشارة إلى أننا نرغب في إجراء عملية وظيفة نافذة.



التالي هو PARTITION BY partition_expression. يقسم هذا البند الصفوف إلى أقسام مختلفة بناءً على تعبير معين. يتم الترتيب بشكل مستقل في كل قسم حيث تبدأ قيمة التصنيف الصحيح عند 1 لكل قسم جديد.



أخيرًا ، لدينا عبارة ORDER BY التي تحدد العمود أو التعبير الذي يحدد ترتيب الصف.





مثال دالة على رتبة PostgreSQL

يوضح الاستعلام التالي مثالًا أساسيًا لاستخدام وظيفة رتبة () في PostgreSQL:

حدد القيمة ، RANK () أكثر من (ترتيب حسب القيمة) كرتبة
من (
القيم (10) ، (20) ، (5) ، (15) ، (10)
) كبيانات (قيمة) ؛

في هذا المثال ، نقوم بترتيب القيم بناءً على ترتيبها التصاعدي. يتم تعيين تكراري القيمة بنفس الترتيب حيث أنهما متشابهان ويظهران في نفس الموضع داخل الترتيب.



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

حدد القيمة ، RANK () OVER (PARTITION BY value٪ 2 ORDER BY value) AS رتبة
من (
القيم (10) ، (20) ، (5) ، (15) ، (10)
) كبيانات (قيمة) ؛

مثال دالة على رتبة PostgreSQL مع التقسيم حسب الشرط

خذ بعين الاعتبار المثال التالي:

حدد القيمة ، RANK () OVER (PARTITION BY value٪ 2 ORDER BY value) AS رتبة
من (
القيم (10) ، (20) ، (5) ، (15) ، (10)
) كبيانات (قيمة) ؛

في هذا المثال ، أضفنا جملة PARTITION BY مع تعبير يتحقق مما إذا كانت القيمة عددًا زوجيًا أم فرديًا. يجب أن يجمع هذا القيم بشكل فعال في قسمين: أحدهما للأرقام الزوجية (حيث يكون الباقي 0) والآخر للأرقام الفردية (حيث يكون الباقي 1).

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

مثال دالة على رتبة PostgreSQL من خلال الجمع بين ميزات SQL المتعددة

يمكنك أيضًا إنشاء استعلامات أكثر تعقيدًا باستخدام وظيفة Rank (). على سبيل المثال ، خذ قاعدة بيانات Pagila. لنفترض أننا نرغب في جلب أفضل خمسة عملاء بناءً على إجمالي مدفوعات الإيجار وتعيين الرتب لهم.

يمكننا استخدام الدالة Rank () كما هو موضح في الاستعلام التالي:

حدد customer_id ، First_name ، last_name ، total_payments ،
RANK () أكثر من (ORDER BY total_payments DESC) AS رتبة
من (
حدد c.customer_id، c.first_name، c.last_name، SUM (p.amount) AS total_payments
من العميل ج
الانضمام إلى الدفع p ON c.customer_id = p.customer_id
تجميع حسب c.customer_id ، c.first_name ، c.last_name
) AS customer_payments
ترتيب حسب الترتيب
الحد 10 ؛

في هذا المثال ، نختار customer_id ، و first_name ، و last_name ، و total_payment ، والترتيب المخصص (). بعد ذلك ، نستخدم وظيفة الترتيب () لتعيين رتبة لكل عميل بناءً على إجمالي الدفعة التي تم فرزها بترتيب تنازلي.

يسمح لنا الاستعلام الفرعي الداخلي بحساب إجمالي المدفوعات لكل عميل من خلال الانضمام إلى العميل وجداول الدفع. نقوم بعد ذلك بتجميع النتيجة بناءً على أعمدة customer_id و first_name و last_name لجلب مجموع المدفوعات لكل عميل.

أخيرًا ، في الاستعلام الخارجي ، نطبق وظيفة الترتيب () على مجموعة النتائج ونرتبها حسب إجمالي المدفوعات بترتيب تصاعدي. نقوم أيضًا بتضمين شرط التحديد لجلب الصفوف العشرة الأولى فقط.

كما ترى ، يمكنك إنشاء المزيد من البيانات الثاقبة من خلال الجمع بين ميزات SQL المتعددة مثل الفرز والتصفية والتجميعات والصلات والمزيد.

خاتمة

اكتشفنا كيف يمكننا العمل مع وظيفة Rank () في PostgreSQL لجلب رتبة صف معين من مجموعة نتائج بناءً على الشروط المحددة. قمنا أيضًا بتغطية كيفية دمج وظيفة Rank () مع أدوات SQL الأخرى لإنشاء استعلامات أكثر تعقيدًا.