কম্পিউটার টিউটোরিয়াল

SQL HAVING ক্লজ: ব্যবহার পদ্ধতি

SQL-এ ডেটাবেস কোয়েরি করার জন্য বিভিন্ন ধরনের অপারেশন আছে। SQL-এর HAVING স্টেটমেন্ট একটি ইনিশিয়াল কোয়েরির ওপর একটি সাবকোয়েরির মত কাজ করে। এটি ভালো কাজ করে যখন আপনার কাছে অতিরিক্ত এন্ট্রি থাকে যেগুলোর একটি কমন ভ্যালু আছে এবং আপনি সেটি আরও ফিল্টার করতে চান। এই আর্টিকেলে, আমরা দেখব কীভাবে এটি কাজ করে।

প্রস্তুতি

এই SQL Fiddle-এ MySQL ব্যবহার করে, আমি এই উদাহরণগুলোর জন্য একটি স্যাম্পল স্কিমা তৈরি করেছি।

create table Cars ( id INT PRIMARY KEY, year VARCHAR(50), car_make VARCHAR(50), car_model VARCHAR(50) );

এটি "Cars" নামে একটি টেবিল তৈরি করে এবং একটি স্কিমা থাকে যা প্রতিটি কারের মেক, মডেল এবং ইয়ার দেখে। পরবর্তী ব্লক সেই কলামগুলোর ভ্যালু ইনসার্ট করে:

insert into Cars (id, year, car_make, car_model) values (1, 2011, 'Mazda', 'Miata MX-5'); insert into Cars (id, year, car_make, car_model) values (2, 1969, 'Ford', 'Mustang'); insert into Cars (id, year, car_make, car_model) values (3, 2007, 'Toyota', '4Runner'); insert into Cars (id, year, car_make, car_model) values (4, 2013, 'Porsche', '911'); insert into Cars (id, year, car_make, car_model) values (5, 1991, 'Buick', 'Coachbuilder'); insert into Cars (id, year, car_make, car_model) values (6, 2007, 'Kia', 'Sportage'); insert into Cars (id, year, car_make, car_model) values (7, 1997, 'Oldsmobile', 'Cutlass Supreme'); insert into Cars (id, year, car_make, car_model) values (8, 2003, 'BMW', '7 Series'); insert into Cars (id, year, car_make, car_model) values (9, 1996, 'Ford', 'F150'); insert into Cars (id, year, car_make, car_model) values (10, 1992, 'Suzuki', 'SJ'); insert into Cars (id, year, car_make, car_model) values (11, 2001, 'Jeep', 'Grand Cherokee'); insert into Cars (id, year, car_make, car_model) values (12, 2000, 'Ford', 'F250'); insert into Cars (id, year, car_make, car_model) values (13, 2003, 'Honda', 'Insight'); insert into Cars (id, year, car_make, car_model) values (14, 2006, 'Chevrolet', 'HHR Panel'); insert into Cars (id, year, car_make, car_model) values (15, 1987, 'Mercedes-Benz', 'S-Class'); insert into Cars (id, year, car_make, car_model) values (16, 2004, 'Chevrolet', 'SSR'); insert into Cars (id, year, car_make, car_model) values (17, 1990, 'Maserati', '228'); insert into Cars (id, year, car_make, car_model) values (18, 2005, 'Saturn', 'Ion'); insert into Cars (id, year, car_make, car_model) values (19, 1987, 'Audi', '5000CS'); insert into Cars (id, year, car_make, car_model) values (20, 1999, 'Chevrolet', 'S10'); insert into Cars (id, year, car_make, car_model) values (21, 2007, 'Jeep', 'Liberty'); insert into Cars (id, year, car_make, car_model) values (22, 2002, 'Lamborghini', 'Murciélago'); insert into Cars (id, year, car_make, car_model) values (23, 2000, 'Hyundai', 'Tiburon'); insert into Cars (id, year, car_make, car_model) values (24, 2011, 'Jeep', 'Patriot'); insert into Cars (id, year, car_make, car_model) values (25, 1985, 'Pontiac', 'Sunbird');

আপনি যদি এই এক্সারসাইজের জন্য নিজের ডেটা মক করতে চান, আমি mockaroo.com ব্যবহার করার পরামর্শ দিই। আপনি এই মেথড ব্যবহার করে আপনার ডেটাবেস স্কিমা খুব সহজে স্ট্রাকচার করতে পারেন।

HAVING কীভাবে ব্যবহার করবেন

SELECT COUNT(id), car_make FROM Cars GROUP BY car_make HAVING COUNT(id) > 0;

HAVING ব্যবহার করুন যখন আপনাকে একটি অ্যাগ্রিগেট ফাংশন ব্যবহার করতে হবে এবং WHERE ক্লজ ব্যবহার করা যায় না। অ্যাগ্রিগেট ফাংশনগুলো সেসব ফাংশন যেগুলো কিছু অপারেশন পারফর্ম করে এবং একটি সিঙ্গল ভ্যালু ফেরত দেয়। COUNT, AVG, বা SUM ভাবুন। উপরের কোডটি ফেরত দেবে:

COUNT(id)car_make
1Audi
1BMW
1Buick
3Chevrolet
3Ford
1Honda
1Hyundai
3Jeep
1Kia
1 Lamborghini
1Maserati
1 Mazda
1Mercedes-Benz
1Oldsmobile
1Pontiac
1Porsche
1Saturn
1Suzuki
1Toyota

আমরা একটি SELECT স্টেটমেন্ট ব্যবহার করি car_make গুলোর SQL COUNT গ্র্যাব করতে এবং একটি GROUP BY ক্লজ ব্যবহার করি সেগুলো car_make দ্বারা আলাদা করার জন্য।

এটাই সব! একটি রিমাইন্ডার হিসেবে, একটি SQL কোয়েরিতে HAVING ক্লজ হলো একটি সাবফিল্টার যা একটি অ্যাগ্রিগেট ফাংশন ব্যবহার করে একটি ডেটাবেসে কিছু অ্যাডিশনাল কোয়েরি ওপারেশন পারফর্ম করে।

অন্য অ্যাগ্রিগেট ফাংশনসহ এক্সপেরিমেন্ট করুন এই ইউনিক ক্লজের জ্ঞান বাড়াতে!

  1. SQL Server-এ PROCEDURE (প্রোসিজার/স্টোরড প্রোসিজার)

  2. SQL Server-এ HAVING ক্লজ

  3. MS SQL Server কী?

  4. Oracle 19c SQL কোয়ারান্টাইন দিয়ে রানওয়ে কুয়েরি প্রতিরোধ করুন