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

MySQL-এ GROUP BY HAVING ব্যবহার করে কলাম অনুযায়ী গ্রুপ করিয়ে যোগফল ফিল্টার করা

GROUP BY দিয়ে গ্রুপ করা után HAVING ক্লজ ব্যবহার করে অ্যাক্টিভ ফাংশনের ফলাফল (যেমন SUM) অনুযায়ী ফিল্টার করা যায়। WHERE গ্রুপের আগে, HAVING গ্রুপের পর কাজ করে।

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

mysql> create table DemoTable782 (Name varchar(100), Score int);
Query OK, 0 rows affected (1.18 sec)
mysql> insert into DemoTable782 values('John', 156);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable782 values('Carol', 250);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable782 values('Bob', 140);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable782 values('John', 126);
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable782 values('John', 140);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable782 values('Bob', 280);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable782 values('Bob', 250);
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable782 values('Carol', 189);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable782 values('Carol', 299);
Query OK, 1 row affected (0.21 sec)

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

mysql> select * from DemoTable782;

আউটপুট:

+-------+-------+
| Name  | Score |
+-------+-------+
| John  | 156   |
| Carol | 250   |
| Bob   | 140   |
| John  | 126   |
| John  | 140   |
| Bob   | 280   |
| Bob   | 250   |
| Carol | 189   |
| Carol | 299   |
+-------+-------+
9 rows in set (0.00 sec)

নাম অনুযায়ী গ্রুপ করে যোগফল ৫০০-এর বেশি হলে ফিল্টার

mysql> SELECT Name, SUM(Score) AS Total 
FROM DemoTable782 
GROUP BY Name 
HAVING Total > 500;

ফলাফল:

+-------+-------+
| Name  | Total |
+-------+-------+
| Carol | 738   |
| Bob   | 670   |
+-------+-------+
2 rows in set (0.00 sec)

গণনা

  • Carol: 250 + 189 + 299 = 738
  • Bob: 140 + 280 + 250 = 670
  • John: 156 + 126 + 140 = 420 (৫০০-এর কম, তাই বাদ)

WHERE vs HAVING

WHERE সারি-স্তরে ফিল্টার করে (গ্রুপের আগে), HAVING গ্রুপ-স্তরে ফিল্টার করে (অ্যাক্টিভ ফাংশনের পর)।

  1. MySQL-এ তারিখ অনুযায়ী গ্রুপ করে ডুপ্লিকেট মান গণনা করা

  2. MySQL-এ GROUP BY ও ORDER BY ব্যবহার করে যোগফল বের করে সর্ট করা

  3. MySQL CONCAT()으로 여러 컬럼 값을 텍스트와 합쳐 단일 컬럼으로 출력하기

  4. MySQL-এ GROUP_CONCAT() এবং SUM() দিয়ে একাধিক সারির স্ট্রিং কম্বাইন এবং আইডি যোগফল করা