মাইএসকিউএল সারি নম্বর উইন্ডো ফাংশন

Mysql Row Number Window Function



মাইএসকিউএল এর মধ্যে, একটি ROW NUMBER () পদ্ধতিতে পার্টিশনের ভিতরে প্রতিটি সারির জন্য একটি কালানুক্রমিক সংখ্যা থাকে। এটি এক ধরণের উইন্ডো বৈশিষ্ট্য। সারিগুলির চিত্র 1 থেকে শুরু হয় বিভাজনের মধ্যে সারির চিত্র দিয়ে। মনে রাখবেন, সংস্করণ 8.0 এর আগে, মাইএসকিউএল ROW NUMBER () ফাংশনের অনুমতি দেয় না, তবে এটি একটি সেশন ভেরিয়েবল অফার করে যা এই বৈশিষ্ট্যটি অনুকরণ করতে সহায়তা করে। আমরা এই গাইড জুড়ে MySQL ROW NUMBER () কার্যকারিতা সম্পর্কে আরও বুঝতে পারব এবং ফলাফল সংগ্রহের প্রতিটি সারির জন্য একটি পরপর সংখ্যা তৈরি করব। মাইএসকিউএল -এ, ROW_NUMBER () পদ্ধতিগুলি পরবর্তী ধারাগুলির সাথে ব্যবহার করা হয়:

  • ওভার () ক্লজ এর মধ্যে ব্যবহার করা হবে।
  • ধারা দ্বারা অর্ডার উল্লিখিত কলামের সাজানোর ক্রম অনুসারে ফলাফলটি সাজান।

বাক্য গঠন:

>> নির্বাচন করুন col_name,ROW_NUMBER()ওভার( অংশ Col_name দ্বারা, আদেশ দ্বারা col_name) এএস সারি_সংখ্যা থেকে table_name;

আসুন অ্যাপ্লিকেশন থেকে MySQL কমান্ড-লাইন ক্লায়েন্ট শেল খুলি এবং লগ ইন করার জন্য পাসওয়ার্ড টাইপ করি।









সারি নম্বর ফাংশনে কাজ শুরু করতে আপনাকে একটি নতুন টেবিল তৈরি করতে হবে বা ডিফল্ট টেবিল ব্যবহার করতে হবে। নীচের ছবিতে উপস্থাপিত হিসাবে, আমাদের স্কিমা ডেটাতে একটি টেবিল প্রাণী রয়েছে যার মধ্যে কিছু রেকর্ড রয়েছে। SELECT নির্দেশনা ব্যবহার করে এর রেকর্ডগুলি সংগ্রহ করা যাক।



>> নির্বাচন করুন * থেকে তথ্য .জন্তু;





উদাহরণ 01: ROW_NUMBER () অর্ডার বাই ক্লজ ব্যবহার করে

সারি সংখ্যা ফাংশনের কিছু উদাহরণ বিশদ করতে আমরা একই টেবিল ব্যবহার করব। আমরা ROW_NUMBER () ফাংশনের একটি উদাহরণ নিচ্ছি যার পরে Over () আছে, যখন শুধুমাত্র ORDER BY ক্লজ ব্যবহার করা হচ্ছে। কলাম মূল্য ক্রম অনুসারে সারি সংখ্যা করার সময় আমরা সমস্ত রেকর্ড নিয়ে আসছি। আমরা একটি কলামের নাম row_num দিয়েছি, যা সারির সংখ্যা সংরক্ষণ করবে। আসুন এটি করার জন্য নীচের কমান্ডটি চেষ্টা করি।

>> নির্বাচন করুন *,ROW_NUMBER()ওভার( আদেশ দ্বারা দাম) এএস সারি_সংখ্যা থেকে তথ্য .জন্তু;

উপরের ক্যোয়ারী সম্পাদন করার পর, আমরা দেখতে পাচ্ছি যে কলাম মূল্য অনুসারে সাজানোর ক্রম অনুসারে সারিগুলি সংখ্যার সাথে বরাদ্দ করা হয়েছে। আপনি মনে করতে পারেন যে কিছু ছোট দাম কলামের শীর্ষে থাকা উচিত এবং এটি সেই অনুযায়ী সাজানো উচিত। কিন্তু ORDER BY ক্লজ মানগুলো সাজানোর জন্য শুধুমাত্র কলামের প্রথম অঙ্ক বা বর্ণমালা দেখে।



কলাম বয়সের সাজানোর ক্রম ব্যবহার করার সময় আসুন অর্ডার বাই ধারা অনুসারে একই প্রশ্নটি সম্পাদন করি। কলাম বয়স অনুযায়ী আউটপুট দেওয়া হবে।

>> নির্বাচন করুন *,ROW_NUMBER()ওভার( আদেশ দ্বারা বয়স) এএস সারি_সংখ্যা থেকে তথ্য .জন্তু;

উদাহরণ 02: ROW_NUMBER () PARTITION BY Clause ব্যবহার করে

আমরা ফলাফলগুলি পরীক্ষা করার জন্য ROW_NUMBER () ক্যোয়ারীতে একমাত্র পার্টিশন বাই ক্লজ ব্যবহার করব। আমরা কলাম রঙ অনুসারে টেবিলের পার্টিশন করার সময় ROW_NUMBER () এবং ওভার ক্লজ অনুসারে রেকর্ডগুলি আনতে SELECT ক্যোয়ারী ব্যবহার করছি। কমান্ড শেলের মধ্যে যুক্ত করা কমান্ডটি চালান।

>> নির্বাচন করুন *,ROW_NUMBER()ওভার( অংশ রঙ দ্বারা) এএস সারি_সংখ্যা থেকে তথ্য .জন্তু;

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

এইবার কলাম লিঙ্গ দ্বারা বিভক্ত একই উদাহরণ চেষ্টা করুন। আমরা যেমন জানি, এই টেবিলে আমাদের মাত্র দুটি লিঙ্গ আছে, সেজন্য ২ টি পার্টিশন তৈরি হবে। মহিলারা r টি সারি দখল করে, এজন্যই এর সারি সংখ্যা ১ থেকে 9. পর্যন্ত।

>> নির্বাচন করুন *,ROW_NUMBER()ওভার( অংশ লিঙ্গ দ্বারা) এএস সারি_সংখ্যা থেকে তথ্য .জন্তু;

উদাহরণ 03: ROW_NUMBER () PARTITION BY & ORDER BY ব্যবহার করে

আমরা মাইএসকিউএল কমান্ড-লাইনে উপরের দুটি উদাহরণ করেছি, এখন সময় এসেছে মাইএসকিউএল ওয়ার্কবেঞ্চ 8.0 এ ROW_NUMBER () উদাহরণটি করার। সুতরাং, অ্যাপ্লিকেশন থেকে মাইএসকিউএল ওয়ার্কবেঞ্চ 8.0 খুলুন। কাজ শুরু করতে স্থানীয় হোস্ট রুট ডাটাবেসের সাথে মাইএসকিউএল ওয়ার্কবেঞ্চ সংযুক্ত করুন।

মাইএসকিউএল ওয়ার্কবেঞ্চের বাম দিকে, আপনি স্কিমা বারটি পাবেন, নেভিগেটরটি উড়িয়ে দিন। এই স্কিমা বারে, আপনি ডাটাবেসের তালিকা পাবেন। ডাটাবেস তালিকার অধীনে, আপনার বিভিন্ন টেবিল এবং সঞ্চিত পদ্ধতি থাকবে, যেমন আপনি নীচের ছবিতে দেখতে পাচ্ছেন। আমাদের ডেটাবেস 'ডেটা' -তে বিভিন্ন টেবিল রয়েছে। আমরা ROW_NUMBER () ফাংশন বাস্তবায়নের জন্য এটি ব্যবহার শুরু করতে ক্যোয়ারী এলাকায় SELECT কমান্ড ব্যবহার করে টেবিল 'অর্ডার 1' খুলব।

>> নির্বাচন করুন * থেকে তথ্য । অর্ডার 1;

টেবিল অর্ডার 1 নীচে দেখানো হিসাবে গ্রিড ভিউতে প্রদর্শিত হয়েছে। আপনি দেখতে পারেন এটিতে 4 টি কলাম ক্ষেত্র, আইডি, অঞ্চল, স্থিতি এবং অর্ডার নং রয়েছে। অর্ডার বাই এবং পার্টিশন বাই বাই ক্লজ ব্যবহার করার সময় আমরা এই টেবিলের সমস্ত রেকর্ড আনবো, একই সাথে।

মাইএসকিউএল ওয়ার্কবেঞ্চ 8.0 এর ক্যোয়ারী এলাকায়, নীচে প্রদর্শিত ক্যোয়ারী টাইপ করুন। SELECT ক্লজ দিয়ে ক্যোয়ারী শুরু করা হয়েছে, ROW_NUMBER () ফাংশন সহ ওভার ক্লজ সহ সমস্ত রেকর্ড এনেছে। ওভার ক্লজ এর পরে, আমরা টেবিলটি পার্টিশন BY স্টেটমেন্টের মাধ্যমে এগিয়ে যাওয়ার কলাম স্ট্যাটাসটি নির্দিষ্ট করে দিয়েছি এই টেবিল অনুযায়ী টেবিলকে পার্টিশনে ভাগ করতে। ORDER BY ক্লজটি কলাম অঞ্চল অনুযায়ী টেবিলকে অবরোহী ভাবে সাজানোর জন্য ব্যবহার করা হয়েছে। সারি সংখ্যাগুলি সারি_নাম কলামে রাখা হবে। এই কমান্ডটি চালানোর জন্য ফ্ল্যাশ আইকনে আলতো চাপুন।

নীচে প্রদর্শিত ফলাফল দেখানো হবে। প্রথমত, কলামের মান অনুযায়ী টেবিলটি দুটি ভাগে বিভক্ত করা হয়েছে। এর পরে, এটি কলাম ‘অঞ্চল’ এর ক্রমবর্ধমান ক্রমে উপস্থাপন করা হয়েছে এবং সারি সংখ্যার সাথে পার্টিশন বরাদ্দ করা হয়েছে।

উপসংহার:

অবশেষে, আমরা মাইএসকিউএল ওয়ার্কবেঞ্চ এবং মাইএসকিউএল কমান্ড-লাইন ক্লায়েন্ট শেল-এ ROW_NUMBER () ফাংশন ব্যবহার করার জন্য সমস্ত প্রয়োজনীয় উদাহরণ সম্পন্ন করেছি।