COUNT(ชื่อคอลัมน์) จะนับเฉพาะแถวที่คอลัมน์นั้น ไม่ใช่ NULL (ต่างจาก COUNT(*) ที่นับทุกแถว)
สร้างตารางและเพิ่มข้อมูล (มี 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), (20, 2), (20, NULL), (20, NULL), (30, 19), (30, 1);
ดูข้อมูล
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 |
+----+------------------+------------------+
นับ NumberOfSolution ที่ไม่ใช่ NULL จำแนกตาม NumberOfQuestion
mysql> SELECT NumberOfQuestion, COUNT(NumberOfSolution) AS NumberOfRows
-> FROM DemoTable
-> GROUP BY NumberOfQuestion;
ผลลัพธ์
+------------------+--------------+
| NumberOfQuestion | NumberOfRows |
+------------------+--------------+
| 20 | 2 |
| 30 | 2 |
+------------------+--------------+
สังเกต: NumberOfQuestion=20 มี 4 แถว แต่ NumberOfSolution ไม่ใช่ NULL แค่ 2 แถว (แถวที่ 1,2)
เปรียบเทียบ: COUNT(*) จะได้ 4 และ 2 ตามลำดับ