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

MySQL-এ GROUP BY HAVING ব্যবহার করে দুইবারও অধিক চলে আসা রেকর্ড বের করা

MySQL-এ কোনো কলামে দুইবারও অধিক (আর্থাৎ ৩ বা তার বেশি বার) চলে আসা মান বের করতে GROUP BY এবং HAVING COUNT(*) > 2 ব্যবহার করা হয়।

টেবিল তৈরি এবং ডেটা ইনসার্ট

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Subject VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.53 sec)
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');
mysql> INSERT INTO DemoTable(Subject) VALUES('Java');
mysql> INSERT INTO DemoTable(Subject) VALUES('SQL Server');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');

সব রেকর্ড দেখানো

mysql> SELECT * FROM DemoTable;

আউটপুট

+----+------------+
| Id | Subject    |
+----+------------+
| 1  | MySQL      |
| 2  | MongoDB    |
| 3  | MySQL      |
| 4  | Java       |
| 5  | SQL Server |
| 6  | MongoDB    |
| 7  | MySQL      |
+----+------------+
7 rows in set (0.00 sec)

২-এর অধিক ঘনত্ব والے Subject বের করা

mysql> SELECT Subject, COUNT(Subject) AS freq
    -> FROM DemoTable
    -> GROUP BY Subject
    -> HAVING COUNT(Subject) > 2;

আউটপুট

+---------+------+
| Subject | freq |
+---------+------+
| MySQL   | 3    |
+---------+------+
1 row in set (0.00 sec)

ব্যাখ্যা: GROUP BY Subject সমান Subject-वाले রো গ্রুপ করে। COUNT(Subject) প্রতিটি গ্রুপের রো সংখ্যা গণনা করে। HAVING COUNT(Subject) > 2 শুধু ৩ বা তার বেশি ঘনত্ব वाले গ্রুপ রাখে। MySQL ৩ বার চলে এলো, MongoDB ২ বার (বাদ পড়েছে)।

নোট: WHERE গ্রুপিং-এর আগে ফিল্টার করে, HAVING গ্রুপিং-এর পরে ফিল্টার করে। এggregate ফাংশন (COUNT, SUM ইত্যাদি) WHERE-এ ব্যবহার করা যায় না।

  1. MySQL ROUND() 함수로 숫자 반올림하기

  2. MySQL UPDATE문에서 IF문으로 조건부 업데이트하기

  3. MySQL-এ তারিখ অনুযায়ী রেকর্ড গোষ্ঠীবদ্ধ করুন

  4. MySQL-এ BOOLEAN কলামে TRUE/FALSE কে ১/০ হিসেবে দেখানো