পোস্টগ্রেস র‌্যাঙ্ক

Postagresa Ra Yanka



PostgreSQL-এ, rank() ফাংশন হল একটি উইন্ডো ফাংশন যা আমাদেরকে প্রদত্ত বাছাইয়ের মানদণ্ডের উপর ভিত্তি করে ফলাফল সেটের মধ্যে প্রতিটি সারিতে একটি র‌্যাঙ্ক বরাদ্দ করতে দেয়। বেশিরভাগ উইন্ডো ফাংশনের মতো, র‌্যাঙ্ক ফাংশন বিশ্লেষণাত্মক প্রশ্নে উপকারী যেমন একটি সারির র‌্যাঙ্ক নির্ধারণ করা যা প্রদত্ত ফলাফল সেটে অন্যদের তুলনায়।

এই টিউটোরিয়ালটি পোস্টগ্রেএসকিউএল ফাংশনগুলির সাথে কীভাবে কাজ করতে হয় তা অন্বেষণ করে। আমরা ফাংশন সিনট্যাক্স এবং প্যারামিটারগুলিও অন্বেষণ করি এবং কিছু ব্যবহারিক উদাহরণ দেখি।

PostgreSQL Rank() ফাংশন

নিম্নলিখিত PostgreSQL-এ rank() ফাংশনের সিনট্যাক্স দেখায়:







RANK() ওভার (পার্টিশন_এক্সপ্রেশন অনুসারে বিভাজন ORDER by sort_expression [ASC|DESC])

আমরা rank() ফাংশন কল করে শুরু করি। তারপরে আমরা একটি উইন্ডো ফাংশন অপারেশন করতে চাই তা বোঝাতে ওভার কীওয়ার্ড ব্যবহার করি।



এর পরেরটি পার্টিশন_এক্সপ্রেশন দ্বারা বিভাজন। এই ধারাটি প্রদত্ত অভিব্যক্তির উপর ভিত্তি করে সারিগুলিকে বিভিন্ন পার্টিশনে বিভক্ত করে। প্রতিটি পার্টিশনে র‌্যাঙ্কিং স্বাধীনভাবে করা হয় যেখানে প্রতিটি নতুন পার্টিশনের জন্য র‌্যাঙ্ক পূর্ণসংখ্যার মান 1 থেকে শুরু হয়।



অবশেষে, আমাদের কাছে ORDER BY ক্লজ রয়েছে যা কলাম বা এক্সপ্রেশনটি নির্দিষ্ট করে যা সারি ক্রম নির্ধারণ করে।





PostgreSQL Rank() ফাংশনের উদাহরণ

নিম্নলিখিত ক্যোয়ারীটি PostgreSQL এর rank() ফাংশন ব্যবহার করার একটি মৌলিক উদাহরণ প্রদর্শন করে:

মান নির্বাচন করুন, RANK() OVER (মান অনুসারে অর্ডার করুন) র্যাঙ্ক হিসাবে
থেকে (
মান (10), (20), (5), (15), (10)
) AS ডেটা(মান);

এই উদাহরণে, আমরা তাদের ক্রমবর্ধমান ক্রম উপর ভিত্তি করে মান র্যাঙ্ক. মানের দুটি ঘটনা একই র‌্যাঙ্কের সাথে বরাদ্দ করা হয়েছে কারণ তারা একই রকম এবং অর্ডারের মধ্যে একই অবস্থানে উপস্থিত হয়।



ফলস্বরূপ টেবিলটি নিম্নরূপ:

মান নির্বাচন করুন, RANK() OVER (মান অনুসারে পার্টিশন % 2 মান দ্বারা ORDER) র্যাঙ্ক হিসাবে
থেকে (
মান (10), (20), (5), (15), (10)
) AS ডেটা(মান);

PostgreSQL Rank() ফাংশন উদাহরণ সহ ধারা দ্বারা বিভাজন

নিম্নলিখিত উদাহরণ বিবেচনা করুন:

মান নির্বাচন করুন, RANK() OVER (মান অনুসারে পার্টিশন % 2 মান দ্বারা ORDER) র্যাঙ্ক হিসাবে
থেকে (
মান (10), (20), (5), (15), (10)
) AS ডেটা(মান);

এই উদাহরণে, আমরা একটি অভিব্যক্তি সহ PARTITION BY ক্লজ যোগ করেছি যা পরীক্ষা করে যে মানটি একটি জোড় বা বিজোড় সংখ্যা। এটি কার্যকরভাবে মানগুলিকে দুটি পার্টিশনে গোষ্ঠীভুক্ত করা উচিত: একটি জোড় সংখ্যার জন্য (যেখানে অবশিষ্টটি 0) এবং অন্যটি বিজোড় সংখ্যার জন্য (যেখানে অবশিষ্টটি 1)।

ফলস্বরূপ সেটটি নিম্নরূপ:

একাধিক SQL বৈশিষ্ট্য একত্রিত করে PostgreSQL Rank() ফাংশনের উদাহরণ

আপনি rank() ফাংশন ব্যবহার করে আরও জটিল প্রশ্ন তৈরি করতে পারেন। উদাহরণস্বরূপ, Pagila ডাটাবেস নিন। ধরুন আমরা তাদের মোট ভাড়া প্রদানের উপর ভিত্তি করে শীর্ষ পাঁচটি গ্রাহককে আনতে চাই এবং তাদের র‌্যাঙ্ক বরাদ্দ করতে চাই।

আমরা নিম্নলিখিত ক্যোয়ারীতে দেখানো হিসাবে rank() ফাংশন ব্যবহার করতে পারি:

গ্রাহক_আইডি, প্রথম_নাম, শেষ_নাম, মোট_প্রদান, নির্বাচন করুন
RANK() OVER (ORDER BY total_payments DESC) হিসাবে র‍্যাঙ্ক
থেকে (
c.customer_id, c.first_name, c.last_name, SUM(p.amount) মোট_পেমেন্ট হিসাবে নির্বাচন করুন
গ্রাহক থেকে গ
পেমেন্টে যোগ দিন c.customer_id = p.customer_id
GROUP BY c.customer_id, c.first_name, c.last_name
) as customer_payments
ক্রম অনুসারে ক্রম
সীমা 10;

এই উদাহরণে, আমরা customer_id, first_name, last_name, total_payment এবং বরাদ্দকৃত র‌্যাঙ্ক() নির্বাচন করি। তারপর, আমরা rank() ফাংশনটি ব্যবহার করি প্রতিটি গ্রাহকের জন্য একটি র‍্যাঙ্ক বরাদ্দ করার জন্য মোট_প্রদানের উপর ভিত্তি করে যা নিচের ক্রমে সাজানো হয়।

অভ্যন্তরীণ সাবকোয়ারি আমাদের গ্রাহক এবং পেমেন্ট টেবিলের সাথে যোগদানের মাধ্যমে প্রতিটি গ্রাহকের জন্য মোট অর্থপ্রদান গণনা করতে দেয়। তারপরে আমরা প্রতিটি গ্রাহকের জন্য অর্থপ্রদানের যোগফল আনতে গ্রাহক_আইডি, প্রথম_নাম এবং শেষ_নাম কলামের উপর ভিত্তি করে ফলাফলকে গোষ্ঠীবদ্ধ করি।

পরিশেষে, বাইরের ক্যোয়ারীতে, আমরা ফলাফল সেটের উপর rank() ফাংশন প্রয়োগ করি এবং ক্রমবর্ধমান ক্রমে total_payments দ্বারা এটিকে অর্ডার করি। শুধুমাত্র শীর্ষ 10টি সারি আনার জন্য আমরা সীমা ধারাও অন্তর্ভুক্ত করি।

আপনি দেখতে পাচ্ছেন, আপনি বাছাই, ফিল্টারিং, সমষ্টি, যোগদান এবং আরও অনেক কিছুর মতো একাধিক SQL বৈশিষ্ট্য একত্রিত করে আরও অন্তর্দৃষ্টিপূর্ণ ডেটা তৈরি করতে পারেন।

উপসংহার

আমরা অন্বেষণ করেছি কিভাবে আমরা PostgreSQL-এ rank() ফাংশনের সাথে কাজ করতে পারি সংজ্ঞায়িত অবস্থার উপর ভিত্তি করে ফলাফল সেট থেকে একটি প্রদত্ত সারির র‍্যাঙ্ক আনতে। আমরা আরও জটিল প্রশ্ন তৈরি করতে অন্যান্য SQL টুলের সাথে rank() ফাংশনকে কীভাবে একত্রিত করতে হয় তাও কভার করেছি।