এটি বিশেষভাবে উপযোগী যখন আপনাকে সারির গোষ্ঠীর জন্য সমষ্টি বা র্যাঙ্কিং গণনা করতে হবে প্রকৃতপক্ষে সম্পূর্ণ ফলাফল সেটটি ভেঙে না দিয়ে।
এই টিউটোরিয়ালে আমাদের সাথে যোগ দিন কারণ আমরা ওভার ক্লজের সাথে কাজ শুরু করার জন্য যা যা জানতে হবে তার সব কিছু শিখেছি।
প্রয়োজনীয়তা:
আমরা ওভার ক্লজের কার্যকারিতা এবং কাজের মধ্যে ডুব দেওয়ার আগে, নিশ্চিত করুন যে আপনার কাছে এসকিউএল এর মূল বিষয়গুলি রয়েছে। আমরা এটাও ধরে নিই যে আপনার কাছে একটি ডাটাবেসের অ্যাক্সেস আছে যা আপনি আপনার জ্ঞান পরীক্ষা করতে ব্যবহার করতে পারেন।
আমাদের ক্ষেত্রে, আমরা সাকিলা নমুনা ডাটাবেসের সাথে MySQL ডাটাবেস ব্যবহার করব। শুধু নিশ্চিত করুন যে আপনার পর্যাপ্ত অনুমতি আছে এবং আপনার ডাটাবেস ইঞ্জিন উইন্ডো ফাংশন সমর্থন করে।
বাক্য গঠন:
যেমনটি আমরা আগে উল্লেখ করেছি, বেশিরভাগ ক্ষেত্রে, আমরা প্রধানত উইন্ডো ফাংশনের সাথে ওভার ক্লজ ব্যবহার করি।
যেমন, আমরা ধারাটির বাক্য গঠনকে নিম্নরূপ প্রকাশ করতে পারি:
<উইন্ডো ফাংশন>(এক্সপ্রেশন) ওভার ([পার্টিশন_এক্সপ্রেশন দ্বারা বিভাজন, ...]
[অর্ডার বাই সর্ট_এক্সপ্রেশন [ASC | DESC], ...]
[ফ্রেম_স্পেসিফিকেশন]
)
প্রদত্ত সিনট্যাক্সে, আমরা প্রতিটি উপাদানকে নিম্নরূপ ভাঙ্গতে পারি:
-
- এটি সেই উইন্ডো ফাংশনকে নির্দেশ করে যা আমরা একটি নির্দিষ্ট সারি যেমন SUM(), AVG(), ROW_NUMBER(), RANK, ইত্যাদির উপর প্রয়োগ করতে চাই। - অভিব্যক্তি - এটি একটি কলাম বা অভিব্যক্তি নির্দিষ্ট করে যার জন্য উইন্ডো ফাংশন প্রয়োগ করা হয়।
- বিভাজন দ্বারা - এটি একটি ঐচ্ছিক ধারা যা ফলাফল সেটকে পার্টিশনে ভাগ করে যেখানে প্রতিটি পার্টিশন একটি পৃথক ইউনিটের মত যেখানে ফাংশন প্রয়োগ করা হয়। একই পার্টিশনের মধ্যে সারিগুলি নির্দিষ্ট কলামগুলিতে একই মান ভাগ করে।
- ORDER BY - এটি প্রতিটি পার্টিশনের সারিগুলি যে ক্রমানুসারে প্রক্রিয়া করা হয় তা নির্দিষ্ট করে।
- frame_specification - এটি একটি ঐচ্ছিক ধারা যা পার্টিশনের মধ্যে সারির ফ্রেম সংজ্ঞায়িত করে। সাধারণ ফ্রেমের স্পেসিফিকেশনগুলির মধ্যে রয়েছে সারিগুলির মধ্যে
AND অথবা RANGE BETWEEN AND
এর বাইরে, আসুন এটি কীভাবে ব্যবহার করবেন তার কিছু ব্যবহারিক উদাহরণ অন্বেষণ করি।
উদাহরণ:
সাকিলা নমুনা ডাটাবেস ব্যবহার করে কিভাবে ক্লজ ব্যবহার করতে হয় তা দেখাই। একটি উদাহরণ বিবেচনা করুন যেখানে আমাদের প্রতিটি চলচ্চিত্র বিভাগের জন্য মোট আয় নির্ধারণ করতে হবে।
আমরা ওভার ক্লজ এবং একগুচ্ছ জয়েন স্টেটমেন্টের সাথে যোগফল উইন্ডো ফাংশন ব্যবহার করতে পারি যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
নির্বাচন করুনcategory.name AS category_name,
film.title AS film_title,
film.rental_rate,
SUM(payment.amount) over (partiTION by category.name) মোট_রাজস্ব হিসাবে
থেকে
ফিল্ম
যোগ দিন
ফিল্ম_বিভাগ চালু
film.film_id = film_category.film_id
যোগ দিন
বিভাগ চালু
film_category.category_id = category.category_id
যোগ দিন
ইনভেন্টরি চালু
film.film_id = inventory.film_id
যোগ দিন
ভাড়া চালু
inventory.inventory_id = rental.inventory_id
যোগ দিন
পেমেন্ট চালু
rental.rental_id = payment.rental_id
অর্ডার করুন
বিভাগ নাম,
film.title;
প্রদত্ত ক্যোয়ারীতে, আমরা ফিল্মের শিরোনাম, ভাড়ার হার নির্বাচন করে শুরু করি এবং ক্যাটাগরির নাম অনুসারে প্রতিটি বিভাগের পার্টিশনের যোগফল নির্ধারণ করতে যোগফল (বিভাগের উপর অর্থ প্রদানের পরিমাণ) ব্যবহার করি।
প্রতিটি অনন্য বিভাগে যোগফলের গণনা পুনরায় শুরু হয় তা নিশ্চিত করতে আমাদের অবশ্যই পার্টিশন বাই ক্লজ ব্যবহার করতে হবে।
ফলস্বরূপ আউটপুট নিম্নরূপ:
সেখানে আপনি এটা আছে!
উপসংহার
এই উদাহরণে, আমরা SQL-এ OVER ক্লজের সাথে কাজ করার মৌলিক বিষয়গুলি অন্বেষণ করেছি। এটি একটি মৌলিক ধারা নয় এবং অন্যান্য SQL বৈশিষ্ট্যগুলির সাথে পূর্ব পরিচিতি প্রয়োজন৷