پوسٹگریس رینک

Pws Grys Rynk



PostgreSQL میں، rank() فنکشن ایک ونڈو فنکشن ہے جو ہمیں ترتیب دینے کے دیئے گئے معیار کی بنیاد پر نتیجے کے سیٹ کے اندر ہر قطار کو ایک درجہ تفویض کرنے کی اجازت دیتا ہے۔ زیادہ تر ونڈو فنکشنز کی طرح، رینک فنکشن بھی تجزیاتی سوالات میں فائدہ مند ہوتا ہے جیسے کہ کسی قطار کے رینک کا تعین کرنا جو کہ دیئے گئے رزلٹ سیٹ میں دوسروں کے مقابلے میں ہو۔

یہ ٹیوٹوریل اس بات کی کھوج کرتا ہے کہ PostgreSQL فنکشنز کے ساتھ کیسے کام کیا جائے۔ ہم فنکشن نحو اور پیرامیٹرز کو بھی دریافت کرتے ہیں اور کچھ عملی مثالوں کو دیکھتے ہیں۔

PostgreSQL Rank() فنکشن

درج ذیل پوسٹگری ایس کیو ایل میں rank() فنکشن کا نحو دکھاتا ہے۔







درجہ بندی () اوور (پارٹیشن_اظہار کے لحاظ سے ترتیب ترتیب_اظہار [ASC|DESC])

ہم rank() فنکشن کو کال کرکے شروع کرتے ہیں۔ اس کے بعد ہم اوور کلیدی لفظ استعمال کرتے ہیں اس بات کی نشاندہی کرنے کے لیے کہ ہم ونڈو فنکشن آپریشن کرنا چاہتے ہیں۔



اس کے بعد PARTITION BY partition_expression ہے۔ یہ شق قطاروں کو دیئے گئے اظہار کی بنیاد پر مختلف پارٹیشنز میں تقسیم کرتی ہے۔ درجہ بندی ہر پارٹیشن میں آزادانہ طور پر کی جاتی ہے جہاں ہر نئے پارٹیشن کے لیے رینک انٹیجر ویلیو 1 سے شروع ہوتی ہے۔



آخر میں، ہمارے پاس ORDER BY شق ہے جو کالم یا اظہار کی وضاحت کرتی ہے جو قطار کی ترتیب کا تعین کرتی ہے۔





PostgreSQL Rank() فنکشن کی مثال

درج ذیل استفسار پوسٹگری ایس کیو ایل کے درجہ () فنکشن کو استعمال کرنے کی ایک بنیادی مثال کو ظاہر کرتا ہے:

قدر منتخب کریں، RANK() OVER (قدر کے لحاظ سے ترتیب دیں) بطور درجہ
سے (
قدریں (10)، (20)، (5)، (15)، (10)
) AS ڈیٹا(ویلیو)؛

اس مثال میں، ہم اقدار کو ان کے صعودی ترتیب کی بنیاد پر درجہ بندی کرتے ہیں۔ قدر کے دو واقعات کو ایک ہی درجہ کے ساتھ تفویض کیا گیا ہے کیونکہ وہ ایک جیسے ہیں اور ترتیب کے اندر ایک ہی پوزیشن میں ظاہر ہوتے ہیں۔



نتیجہ کی میز مندرجہ ذیل ہے:

قدر منتخب کریں، RANK() OVER (PARTITION BY قدر % 2 ORDER BY قدر) بطور درجہ
سے (
قدریں (10)، (20)، (5)، (15)، (10)
) AS ڈیٹا(ویلیو)؛

PostgreSQL Rank() فنکشن کی مثال بذریعہ شق تقسیم کے ساتھ

مندرجہ ذیل مثال پر غور کریں:

قدر منتخب کریں، RANK() OVER (PARTITION BY قدر % 2 ORDER BY قدر) بطور درجہ
سے (
قدریں (10)، (20)، (5)، (15)، (10)
) AS ڈیٹا(ویلیو)؛

اس مثال میں، ہم نے ایک اظہار کے ساتھ PARTITION BY شق کا اضافہ کیا ہے جو چیک کرتا ہے کہ آیا قدر ایک عدد ہے یا طاق۔ اس سے قدروں کو مؤثر طریقے سے دو پارٹیشنز میں گروپ کرنا چاہیے: ایک جفت نمبروں کے لیے (جہاں بقیہ 0 ہے) اور دوسرا طاق نمبروں کے لیے (جہاں بقیہ 1 ہے)۔

نتیجہ سیٹ مندرجہ ذیل ہے:

PostgreSQL Rank() فنکشن کی مثال ایک سے زیادہ SQL خصوصیات کو ملا کر

آپ rank() فنکشن کا استعمال کرتے ہوئے مزید پیچیدہ سوالات بھی تشکیل دے سکتے ہیں۔ مثال کے طور پر، Pagila ڈیٹا بیس کو لے لو. فرض کریں کہ ہم سب سے اوپر پانچ صارفین کو ان کے کرایے کی کل ادائیگیوں کی بنیاد پر لانا چاہتے ہیں اور انہیں رینک تفویض کرنا چاہتے ہیں۔

ہم درجہ () فنکشن کو استعمال کر سکتے ہیں جیسا کہ درج ذیل استفسار میں دکھایا گیا ہے۔

کسٹمر_آئی ڈی، پہلا_نام، آخری_نام، کل_ادائیگیوں کو منتخب کریں،
RANK() OVER (ORDER BY total_Payments DESC) بطور درجہ
سے (
c.customer_id، c.first_name، c.last_name، SUM(p.amount) بطور کل_ادائیگیوں کو منتخب کریں
گاہک سے c
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، اور تفویض کردہ درجہ () کو منتخب کرتے ہیں۔ اس کے بعد، ہم کل_ادائیگی کی بنیاد پر ہر صارف کو ایک درجہ تفویض کرنے کے لیے rank() فنکشن کا استعمال کرتے ہیں جسے نزولی ترتیب میں ترتیب دیا گیا ہے۔

اندرونی ذیلی سوال ہمیں گاہک اور ادائیگی کی میزوں میں شامل ہو کر ہر گاہک کی کل ادائیگیوں کا حساب لگانے کی اجازت دیتا ہے۔ اس کے بعد ہم ہر گاہک کے لیے ادائیگیوں کی رقم حاصل کرنے کے لیے customer_id، first_name، اور last_name کالموں کی بنیاد پر نتیجہ کو گروپ کرتے ہیں۔

آخر میں، بیرونی استفسار میں، ہم rank() فنکشن کو رزلٹ سیٹ پر لاگو کرتے ہیں اور اسے کل_ادائیگیوں کے حساب سے صعودی ترتیب میں ترتیب دیتے ہیں۔ ہم صرف اوپر کی 10 قطاریں لانے کے لیے حد کی شق بھی شامل کرتے ہیں۔

جیسا کہ آپ دیکھ سکتے ہیں، آپ متعدد ایس کیو ایل خصوصیات جیسے کہ چھانٹنا، فلٹرنگ، ایگریگیٹس، جوائنز، اور مزید کو ملا کر مزید بصیرت انگیز ڈیٹا تیار کر سکتے ہیں۔

نتیجہ

ہم نے دریافت کیا کہ ہم کس طرح پوسٹگری ایس کیو ایل میں رینک() فنکشن کے ساتھ کام کر سکتے ہیں تاکہ متعین شرائط کی بنیاد پر کسی نتیجے کے سیٹ سے دی گئی قطار کا درجہ حاصل کیا جا سکے۔ ہم نے مزید پیچیدہ سوالات پیدا کرنے کے لیے rank() فنکشن کو دوسرے SQL ٹولز کے ساتھ جوڑنے کا طریقہ بھی بتایا۔