কম্পিউটার

এসকিউএল কেস

আপনি যখন একটি ডাটাবেসের সাথে কাজ করছেন, তখন আপনি একটি if/then চালাতে চাইতে পারেন আপনার প্রশ্নের অপারেশন. উদাহরণস্বরূপ, আপনি কর্মীদের একটি তালিকার মধ্য দিয়ে যেতে এবং তাদের প্রবেশন অবস্থা পরিবর্তন করতে চাইতে পারেন যদি তারা এক বছরেরও বেশি সময় ধরে আপনার সাথে কাজ করে থাকে। অথবা আপনি লিডারবোর্ডে খেলোয়াড়দের তালিকার মধ্য দিয়ে যেতে চাইতে পারেন এবং যদি তারা শীর্ষ তিনে স্থান পায় তাহলে তাদের বিজয়ী হিসেবে চিহ্নিত করতে পারেন।

এই অপারেশনগুলিকে SQL এ চালানোর জন্য , আপনাকে CASE ব্যবহার করতে হবে বিবৃতি SQL CASE বিবৃতি আপনাকে if/then চালানোর অনুমতি দেয় অপারেশন, আপনি কিভাবে if/then চালাতে পারেন তার অনুরূপ মাইক্রোসফ্ট এক্সেলে পদ্ধতি।

এই নির্দেশিকায়, আমরা SQL CASE-এর মূল বিষয়গুলি ভেঙে দিতে যাচ্ছি বিবৃতি, এবং আলোচনা করুন কিভাবে আপনি আপনার প্রশ্নগুলিতে এটি ব্যবহার করতে পারেন। একাধিক SQL CASE কীভাবে ব্যবহার করবেন তাও আমরা আলোচনা করব বিবৃতি, এবং কিভাবে CASE অন্বেষণ করুন সামগ্রিক ফাংশনের সাথে ব্যবহার করা যেতে পারে।

কোয়েরি রিফ্রেসার

একটি ডাটাবেস থেকে তথ্য পুনরুদ্ধার করতে, আপনাকে একটি প্রশ্ন লিখতে হবে। প্রশ্নগুলি প্রায় সবসময়ই SELECT দিয়ে শুরু হয় স্টেটমেন্ট, যা ডাটাবেসকে জানাতে ব্যবহৃত হয় কোন কলামগুলি ক্যোয়ারী দ্বারা ফেরত দেওয়া উচিত। প্রশ্নগুলিতে সাধারণত একটি FROM অন্তর্ভুক্ত থাকে ধারা, যা ডাটাবেসকে বলে যে অপারেশনটি কোন টেবিলটি অনুসন্ধান করবে৷

SQL-এ একটি প্রশ্নের জন্য সিনট্যাক্স এখানে :

সারণীর_নাম থেকে কলাম_নাম নির্বাচন করুন যেখানে শর্ত_পুরন হয়;

চলুন একটি উদাহরণ ব্যবহার করা যাক কর্মে এটি ব্যাখ্যা করার জন্য। এখানে একটি প্রশ্ন যা আমাদের employees সকল কর্মচারীদের নাম ফেরত দেবে টেবিল:

কর্মচারীদের থেকে নাম নির্বাচন করুন;

আমাদের ক্যোয়ারী ফলাফল দেয়:

নাম
লুক
মাইক
হান্না
জিওফ
অ্যালেক্সিস
এমা
জোনাহ
আদম

(8 সারি)

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

গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় কাটিয়েছে।

যদি আমরা একাধিক কলাম পুনরুদ্ধার করতে চাই, আমরা একটি কলামের সাথে তাদের নাম আলাদা করে তা করতে পারি। অথবা যদি আমরা প্রতিটি কলাম সম্পর্কে তথ্য সংগ্রহ করতে চাই, আমরা তারকাচিহ্ন ব্যবহার করতে পারি (* ) অপারেটর, যা একটি SQL-এর সমস্ত কলাম প্রতিনিধিত্ব করে টেবিল।

উপরন্তু, যদি আমরা শর্তগুলির একটি নির্দিষ্ট সেটের উপর ভিত্তি করে রেকর্ডগুলি ফিল্টার করতে চাই, আমরা WHERE ব্যবহার করতে পারি ধারা এখানে একটি কোয়েরির একটি উদাহরণ যা একটি কোম্পানির আলবেনি শাখায় থাকা সমস্ত কর্মচারীদের নাম খুঁজে পায়:

কর্মচারীদের থেকে নাম নির্বাচন করুন যেখানে শাখা ='আলবানি';

এখানে আমাদের প্রশ্নের ফলাফল:

নাম
এমা
জোনাহ

(2 সারি)

এই সব অপেক্ষাকৃত সহজ প্রশ্ন. কিন্তু যদি আমরা একটি if/then করতে চাই অপারেশন যখন আমরা একটি প্রশ্ন চালাচ্ছি? সেখানেই SQL CASE বিবৃতি সহায়ক হতে পারে।

SQL কেস

CASE বিবৃতি SQL-এ ব্যবহার করা যেতে পারে if/then সংজ্ঞায়িত করতে আমাদের কোডে যুক্তি। উদাহরণ স্বরূপ, যদি আমরা প্রত্যেক কর্মচারীকে বাড়ানোর জন্য চাই যারা আমাদের ব্যবসার সাথে পাঁচ বা তার বেশি বছর ধরে কাজ করেছে, তাহলে আমরা CASE ব্যবহার করতে চাই বিবৃতি।

এখানে SQL CASE-এর সিনট্যাক্স রয়েছে বিবৃতি:

কলাম 1_নাম নির্বাচন করুন CASE WHEN column2_name ='X' তারপর 'Y' অন্য শূন্য শেষ হিসাবে table_name থেকে কলাম3_name;

এই ক্যোয়ারীতে অনেক কিছু চলছে, তাই এটি কীভাবে কাজ করে তা ব্যাখ্যা করার জন্য একটি উদাহরণ ব্যবহার করা যাক। ধরা যাক যে আমরা প্রত্যেক কর্মচারীকে পাঁচটির বেশি employee of the month দিতে চাই। পুরস্কার একটি $200 বাড়াতে. এখানে একটি SQL আছে বিবৃতি যা সেই লক্ষ্য পূরণ করতে পারে:

নাম নির্বাচন করুন, CASE WHEN employee_month_awards> 5 তারপর 200 টি NULL END যেহেতু কর্মচারীদের কাছ থেকে মুলতুবি_বৃদ্ধি;

আমাদের অনুসন্ধান আমাদের অনুসন্ধান করা কেস এক্সপ্রেশন থেকে নিম্নলিখিতগুলি প্রদান করে:

নাম pending_raise
লুক
মাইক
হানা
জিওফ
অ্যালেক্সিস
এমা 200
জোনা
আদম 200

(8 সারি)

আসুন এটি ভেঙে ফেলি। CASE বিবৃতি প্রতিটি রেকর্ড পরীক্ষা করে এবং শর্তসাপেক্ষ বিবৃতি, employee month awards > 5 কিনা তা মূল্যায়ন করে , সত্য. শর্তসাপেক্ষ বিবৃতি সত্য হলে, মান 200 pending_raise-এ মুদ্রিত হবে কলাম যেখানে শর্তসাপেক্ষ বিবৃতিটি মিথ্যা, সেখানে একটি শূন্য মান থাকে।

অবশেষে, আমাদের ক্যোয়ারী কর্মীদের নামের তালিকা, সেইসাথে সেই কর্মচারীদের মুলতুবি উত্থাপনগুলি ফেরত দেয়৷

এটা মনে রাখা গুরুত্বপূর্ণ যে SQL CASE বিবৃতি আমাদের টেবিলে একটি নতুন কলাম যোগ করে না। বরং, এটি আমাদের SELECT-এ একটি কলাম তৈরি করে প্রশ্ন আউটপুট , যাতে আমরা দেখতে পারি কে বাড়ানোর যোগ্য৷

উপরন্তু, আমরা যদি চাই যে প্রত্যেককে যারা বৃদ্ধির জন্য যোগ্য নয় তাদের একটি দেওয়া হোক মুলতুবি বৃদ্ধি, আমরা নির্দিষ্ট করতে পারি NULL এর পরিবর্তে আমাদের ELSE-এ বিবৃতি আমরা একটি ORDER BYও ব্যবহার করতে পারি যদি আমরা একটি নির্দিষ্ট ক্রমে আমাদের ডেটা দেখতে চাই তাহলে আমাদের স্টেটমেন্ট অর্ডার করার ধারা৷

SQL CASE এবং একাধিক শর্তাবলী

CASE বিবৃতি একই প্রশ্নে একাধিকবার ব্যবহার করা যেতে পারে। আমরা যদি প্রত্যেক কর্মচারীকে দিতে চাই যার তিন বা ততোধিক পুরষ্কার রয়েছে তাদের $50 বাড়াতে এবং যাদের পাঁচ বা তার বেশি পুরষ্কার রয়েছে তাদের প্রত্যেককে $200 বৃদ্ধি করতে, আমরা নিম্নলিখিত বিবৃতিটি ব্যবহার করতে পারি:

নাম নির্বাচন করুন, CASE WHEN কর্মচারী_মাস_পুরস্কার> 5 তারপর 200 কখন কর্মচারী_মাস_পুরস্কার> 3 তারপর 50 অন্য 0 END কর্মচারীদের কাছ থেকে মুলতুবি_বাড়ানোর হিসাবে;

আমাদের ক্যোয়ারী থেকে আউটপুট নিম্নরূপ:

নাম pending_raise
লুক 50
মাইক
হানা
জিওফ
অ্যালেক্সিস
এমা 200
জোনা 50
আদম 200

(8 সারি)

আমাদের উদাহরণে, CASE বিবৃতিগুলি যে ক্রমে লেখা হয় সেই ক্রমে মূল্যায়ন করা হবে৷

সুতরাং, আমাদের ক্যোয়ারী প্রথমে সেই লোকেদের জন্য পরীক্ষা করে যাদের পাঁচটির বেশি পুরস্কার রয়েছে এবং তাদের মুলতুবি বৃদ্ধি সেট করে 200 . তারপরে, আমাদের ক্যোয়ারী এমন লোকেদের জন্য পরীক্ষা করে যাদের তিনটি পুরষ্কার আছে, এবং তাদের মুলতুবি বৃদ্ধি সেট করে 50 . অবশেষে, যদি একজন কর্মচারী কোনো মানদণ্ড পূরণ না করে, তাহলে তাদের মুলতুবি বৃদ্ধি এ সেট করা হবে .

যাইহোক, এই কোড আরো দক্ষ হতে পারে. একটি নির্দিষ্ট ক্রমে বিবৃতি লেখার পরিবর্তে যাতে আমাদের প্রোগ্রাম কাজ করে, আমাদের এমন বিবৃতি লিখতে হবে যা ওভারল্যাপ না হয়। এখানে একটি প্রশ্নের উদাহরণ রয়েছে যা উপরের মত একইভাবে কাজ করে, কিন্তু AND ব্যবহার করে একজন কর্মচারী কত পুরষ্কার অর্জন করেছেন তা পরীক্ষা করার বিবৃতি:

নাম নির্বাচন করুন, CASE WHEN কর্মচারী_মাস_পুরষ্কার>=3 এবং কর্মচারী_মাস_পুরষ্কার <=5 তারপর 50 কখন কর্মচারী_মাস_পুরষ্কার> 5 তারপর 200 অন্য 0 END কর্মচারীদের কাছ থেকে মুলতুবি_বৃদ্ধি হিসাবে;

আমাদের ক্যোয়ারী আমাদের উপরের কোয়েরির মতই রিটার্ন করে। যাইহোক, এটি CASE এর অর্ডারের উপর নির্ভর করে না বিবৃতি, যার মানে আমরা একটি ভুল বিবৃতি দিয়ে ভুল করার সম্ভাবনা কম।

SQL CASE এবং সামগ্রিক কার্যাবলী

এছাড়াও আপনি CASE ব্যবহার করতে পারেন একটি সমষ্টিগত ফাংশন সহ। আপনি শুধুমাত্র একটি নির্দিষ্ট শর্ত পূরণ করে এমন সারি গণনা করতে চাইলে এটি কার্যকর হতে পারে। উদাহরণস্বরূপ, আপনি যদি জানতে চান কতজন কর্মচারী $200 বোনাস পেয়েছেন, আপনি CASE ব্যবহার করতে পারেন একটি সমষ্টিগত ফাংশন সহ।

এখানে CASE ব্যবহার করার জন্য সিনট্যাক্স আছে একটি সমষ্টিগত ফাংশন সহ:

কলাম 1_নাম নির্বাচন করুন CASE যখন column2_name ='X' তারপর 'Y' অন্য শূন্য শেষ হিসাবে কলাম3_name, COUNT(1) হিসাবে গণনা table_nameGROUP BY column3_name;

এটি কীভাবে কাজ করে তা বোঝাতে একটি উদাহরণ ব্যবহার করা যাক। ধরা যাক যে আমরা জানতে চাই কতজন কর্মচারী $50 বা তার বেশি বোনাসের জন্য যোগ্য। আমরা এই তথ্য পেতে নিম্নলিখিত ক্যোয়ারী ব্যবহার করতে পারি:

কেস নির্বাচন করুন যখন কর্মচারী_মাস_পুরষ্কার>=3 এবং কর্মচারী_মাস_পুরষ্কার <=5 তারপর 50 যখন কর্মচারী_মাস_পুরষ্কার> 5 তারপর 200 অন্য 0 END মুলতুবি_বৃদ্ধি হিসাবে, COUNT(1) হিসাবে গণনা মুলতুবি_বৃদ্ধি> 

আমাদের ক্যোয়ারী নিম্নলিখিতগুলি প্রদান করে:

পেন্ডিং_রাইজ গণনা
50 3
3
200 2

আপনি দেখতে পাচ্ছেন, আমাদের ক্যোয়ারী কর্মীদের দ্বারা অর্জিত মুলতুবি উত্থাপনের একটি তালিকা প্রদান করেছে, সেইসাথে কর্মীদের বকেয়া থাকা প্রতিটি ধরনের বৃদ্ধির সংখ্যা। এই ক্ষেত্রে, তিনজন কর্মচারীর জন্য $50 বাড়াতে হবে, তিনজন কর্মচারীর কোনো বাড়ানো হবে না এবং দুইজন কর্মচারীর $200 বাড়ানো হবে।

উপসংহার

এই টিউটোরিয়ালে, আমরা SQL-এর মূল বিষয়গুলি ভেঙে দিয়েছি সার্ভার CASE বিবৃতি এবং আলোচনা করা হয়েছে কিভাবে এটি if/then বাস্তবায়ন করতে ব্যবহার করা যেতে পারে আমাদের প্রশ্নে যুক্তি। আমরা CASE কিভাবে আলোচনা করেছি একাধিক শর্ত এবং সামগ্রিক ফাংশন ব্যবহার করা যেতে পারে।

একটি অনুস্মারক হিসাবে, প্রতিটি সহজ CASE অভিব্যক্তি এই নিয়ম অনুসরণ করা উচিত:

  • CASE বিবৃতিটি SELECT-এ থাকা উচিত ধারা;
  • CASE বিবৃতিতে WHEN অন্তর্ভুক্ত করা উচিত , THEN , এবং END উপাদান;
  • একাধিক WHEN বিবৃতি এবং ELSE ধারাগুলি ঐচ্ছিকভাবে ব্যবহার করা যেতে পারে;
  • শর্তযুক্ত বিবৃতি, যেমন AND অথবা OR , একটি CASE এ ব্যবহার করা যেতে পারে WHEN-এর মধ্যে প্রশ্ন এবং THEN ধারা।

এখন আপনি CASE ব্যবহার করার জন্য প্রয়োজনীয় জ্ঞান দিয়ে সজ্জিত SQL এর মত বিবৃতি পেশাদার!


  1. SQL সার্ভারে CASE বিবৃতি

  2. SQL সার্ভারে SUBQUERY চাইল্ডকে জিজ্ঞাসা করুন

  3. Microsoft SQL সার্ভার ক্যোয়ারী স্টোর

  4. এসকিউএল কোয়ারেন্টাইন