MySQL-এ COUNT(column_name) ফাংশন শুধু NULL নন-ভ্যালু (NOT NULL values) গড়ে। এটি NULL ভ্যালুগুলো বাদ দেয়। এই বৈশিষ্ট্যটি ব্যবহার করে নির্দিষ্ট কলামে কতটি নন-নাল ভ্যালু আছে তা জানা যায়।
টেবিল তৈরি এবং ডেটা ইনসার্ট (NULL সহ)
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> NumberOfQuestion INT,
-> NumberOfSolution INT
-> );
mysql> INSERT INTO DemoTable(NumberOfQuestion, NumberOfSolution) VALUES(20, 10);
mysql> INSERT INTO DemoTable(NumberOfQuestion, NumberOfSolution) VALUES(20, 2);
mysql> INSERT INTO DemoTable(NumberOfQuestion, NumberOfSolution) VALUES(20, NULL);
mysql> INSERT INTO DemoTable(NumberOfQuestion, NumberOfSolution) VALUES(20, NULL);
mysql> INSERT INTO DemoTable(NumberOfQuestion, NumberOfSolution) VALUES(30, 19);
mysql> INSERT INTO DemoTable(NumberOfQuestion, NumberOfSolution) VALUES(30, 1);
সব রেকর্ড দেখুন (NULL দেখাচ্ছে)
mysql> SELECT * FROM DemoTable;
+----+------------------+------------------+
| Id | NumberOfQuestion | NumberOfSolution |
+----+------------------+------------------+
| 1 | 20 | 10 |
| 2 | 20 | 2 |
| 3 | 20 | NULL |
| 4 | 20 | NULL |
| 5 | 30 | 19 |
| 6 | 30 | 1 |
+----+------------------+------------------+
NumberOfQuestion গ্রুপ বাই করে NumberOfSolution-এর NOT NULL কাউন্ট
mysql> SELECT NumberOfQuestion, COUNT(NumberOfSolution) AS NumberOfRows
-> FROM DemoTable
-> GROUP BY NumberOfQuestion;
ফলাফল
+------------------+--------------+
| NumberOfQuestion | NumberOfRows |
+------------------+--------------+
| 20 | 2 |
| 30 | 2 |
+------------------+--------------+
ব্যাখ্যা:
- NumberOfQuestion = 20: ৪টি রো আছে, কিন্তু NumberOfSolution শুধু ২টি রোতে NOT NULL (১০ এবং ২)। ২টি NULL বাদ পড়েছে।
- NumberOfQuestion = 30: ২টি রো, দুটোই NOT NULL (১৯ এবং ১)।
COUNT(*) বনাম COUNT(column)
| ফাংশন | গড়ে | NULL হ্যান্ডলিং |
|---|---|---|
COUNT(*) | সকল রো | NULL ও গড়ে |
COUNT(column) | সpecific কলামের নন-নাল ভ্যালু | NULL বাদ দেয় |
COUNT(DISTINCT column) | ইউনিক নন-নাল ভ্যালু | NULL বাদ দেয় |
উদাহরণ: COUNT(*) vs COUNT(NumberOfSolution)
SELECT
NumberOfQuestion,
COUNT(*) AS total_rows,
COUNT(NumberOfSolution) AS non_null_solutions
FROM DemoTable
GROUP BY NumberOfQuestion;
+------------------+------------+--------------------+
| NumberOfQuestion | total_rows | non_null_solutions |
+------------------+------------+--------------------+
| 20 | 4 | 2 |
| 30 | 2 | 2 |
+------------------+------------+--------------------+