SQL DENSE_RANK() ফাংশন

Sql Dense Rank Phansana



উইন্ডো ফাংশন এসকিউএল-এ একটি গুরুত্বপূর্ণ বৈশিষ্ট্য এবং SQL ডাটাবেসে জটিল ডেটা গণনা এবং ক্রিয়াকলাপে মৌলিক ভূমিকা পালন করে। এসকিউএল উইন্ডো ফাংশনের মধ্যে একটি ফাংশন হল dense_rank()।

DENSE_RANK() ফাংশন আমাদের আরও একটি নির্দিষ্ট কলামের মানের উপর ভিত্তি করে ফলাফল সেটের মধ্যে প্রতিটি সারিতে একটি অনন্য র‌্যাঙ্ক বরাদ্দ করতে দেয়। এটি rank() ফাংশনের সাথে খুব মিল কিন্তু ফাংশনটি ডুপ্লিকেট রেকর্ডগুলি কীভাবে পরিচালনা করে তাতে সামান্য পার্থক্য রয়েছে।

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







কিভাবে এটা কাজ করে

এই ফাংশন কিভাবে কাজ করে তা ব্যাখ্যা করে শুরু করা যাক। এটি মনে রাখা ভাল যে ফাংশনটি উচ্চ-স্তরের, এবং আমরা অন্তর্নিহিত বাস্তবায়ন ব্যাখ্যা করতে পারি না।



ফাংশনটি ফলাফল সেটের প্রতিটি সারিতে একটি র‍্যাঙ্ক বরাদ্দ করে র‍্যাঙ্ক 1 থেকে শুরু করে এবং কলামের প্রতিটি অনন্য মানের জন্য 1 দ্বারা বৃদ্ধি করে।



নির্দিষ্ট কলামে অনুরূপ মান (ডুপ্লিকেট) সহ সারিগুলি একই র্যাঙ্কের সাথে বরাদ্দ করা হয় এবং একটি ভিন্ন মান সহ পরবর্তী সারি পরবর্তী উপলব্ধ র্যাঙ্কের সাথে বরাদ্দ করা হয়, কোন ফাঁক ছাড়াই৷





আমরা যেমন উল্লেখ করেছি, ফাংশনটি এমন কোনো ফাঁক রাখে না যেখানে ডুপ্লিকেট মান রয়েছে যা এটিকে rank() ফাংশন থেকে আলাদা করে তোলে।

dense_rank() ফাংশনের একটি সাধারণ ব্যবহার হল র‍্যাঙ্কিং ক্রিয়াকলাপ সম্পাদন করা। উদাহরণস্বরূপ, আমরা শীর্ষ এন রেকর্ড ইত্যাদি খুঁজে পেতে এটি ব্যবহার করতে পারি।



ফাংশন সিনট্যাক্স:

নিম্নলিখিতটি dense_rank() ফাংশনের সিনট্যাক্স বর্ণনা করে:

DENSE_RANK() ওভার (

[পার্টিশন_এক্সপ্রেশন দ্বারা বিভাজন, ... ]

অর্ডার করুন সাজানোর_অভিব্যক্তি দ্বারা [ASC | DESC], ...

)

প্রদত্ত সিনট্যাক্সে:

  1. আমরা নিজেই dense_rank() ফাংশন দিয়ে শুরু করি।
  2. ওভার ক্লজ উইন্ডো ফাংশন স্পেসিফিকেশন শুরুর সংকেত দেয়। এটি ফলাফল সেটের মধ্যে কীভাবে র‌্যাঙ্কিং প্রয়োগ করা হয় তা নির্ধারণ করে।
  3. পার্টিশন_এক্সপ্রেশন দ্বারা বিভাজন একটি ঐচ্ছিক ধারা যা আমাদের এক বা একাধিক কলামের উপর ভিত্তি করে গোষ্ঠী বা পার্টিশনে বিভক্ত করার অনুমতি দেয়। একটি নতুন পার্টিশনে র্যাঙ্ক রিসেট করার সাথে প্রতিটি পার্টিশনে আলাদাভাবে র‌্যাঙ্কিং প্রয়োগ করা হয়।
  4. ORDER BY sort_expression সেই ক্রমটি নির্দিষ্ট করে যা আমরা ফলিত পার্টিশনে ডেটা সাজানোর জন্য ব্যবহার করতে চাই।

নমুনা তথ্য

কিভাবে dense_rank() ফাংশন ব্যবহার করতে হয় তা প্রদর্শন করতে, আসুন একটি নমুনা ডেটা সহ একটি টেবিল দিয়ে শুরু করি। আমাদের ক্ষেত্রে, আমরা নিম্নরূপ একটি নমুনা 'অর্ডার' টেবিল ব্যবহার করি:

উদাহরণ 1: Dense_Rank() ফাংশন ব্যবহার

আমরা দামের উপর ভিত্তি করে ফলস্বরূপ অর্ডারগুলিকে র‌্যাঙ্ক করতে dense_rank() ফাংশন ব্যবহার করতে পারি। নিম্নলিখিত উদাহরণ প্রশ্ন বিবেচনা করুন:

নির্বাচন করুন

অর্ডার_আইডি,

গ্রাহক_ব্যবহারকারীর নাম,

পণ্য_ক্রয় করা,

DENSE_RANK() ওভার (

অর্ডার করুন দ্বারা

মূল্য DISC

) মূল্য_র্যাঙ্ক

থেকে

আদেশ o;

প্রদত্ত উদাহরণে, আমরা অর্ডারের মূল্যের উপর ভিত্তি করে ডেটা র‌্যাঙ্ক করার জন্য dense_rank() ফাংশন ব্যবহার করি। আমরা পার্টীশন বাই ক্লজ বাদ দিই কারণ আমরা ডেটা গোষ্ঠীভুক্ত করি না।

ফলস্বরূপ আউটপুট নিম্নরূপ:

উদাহরণ 2: পার্টিশন দ্বারা

আমরা ক্রয়কৃত পণ্যের উপর ভিত্তি করে ডেটাকে বিভিন্ন সেগমেন্টে গোষ্ঠীবদ্ধ করতে বিভাগ দ্বারা বিভাজন যুক্ত করতে পারি।

একটি উদাহরণ ক্যোয়ারী নিম্নরূপ:

নির্বাচন করুন

অর্ডার_আইডি,

গ্রাহক_ব্যবহারকারীর নাম,

পণ্য_ক্রয় করা,

DENSE_RANK() ওভার (

পণ্য_ক্রয় দ্বারা বিভাজন

অর্ডার করুন দ্বারা

মূল্য DISC

) মূল্য_র্যাঙ্ক

থেকে

আদেশ o;

এটি ফলাফল গোষ্ঠীর উপর ভিত্তি করে ডেটাকে বিভিন্ন গ্রুপে গোষ্ঠীভুক্ত করা উচিত এবং প্রতিটি গ্রুপের আইটেমের জন্য র‌্যাঙ্ক প্রয়োগ করা উচিত।

উপসংহার

এই পোস্টে, আমরা নির্দিষ্ট কলামের উপর ভিত্তি করে মানগুলির জন্য একটি র‌্যাঙ্ক বরাদ্দ করার জন্য SQL-এ dense_rank() উইন্ডো ফাংশন ব্যবহার এবং কাজ করার মৌলিক বিষয়গুলি শিখেছি।