การนับจำนวนแถวต่อกลุ่มด้วย GROUP BY
ใช้ COUNT() ร่วมกับ GROUP BY เพื่อนับจำนวนแถวของแต่ละค่าที่แตกต่างกัน
ตัวอย่าง
mysql> create table DemoTable841(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value varchar(100) );
Query OK, 0 rows affected (0.67 sec)
mysql> insert into DemoTable841(Value) values('X');
mysql> insert into DemoTable841(Value) values('Y');
mysql> insert into DemoTable841(Value) values('Y');
mysql> insert into DemoTable841(Value) values('Z');
mysql> insert into DemoTable841(Value) values('X');
mysql> insert into DemoTable841(Value) values('Z');
คำสั่งนับจำนวน
mysql> select Value, Concat(COUNT(Value), ' Times') from DemoTable841 group by Value;
ผลลัพธ์:
+-------+-------------------------------+
| Value | Concat(COUNT(Value), ' Times') |
+-------+-------------------------------+
| X | 2 Times |
| Y | 2 Times |
| Z | 2 Times |
+-------+-------------------------------+
รูปแบบอื่นๆ
-- นับแถวทั้งหมดในแต่ละกลุ่ม (รวม NULL)
SELECT Value, COUNT(*) as cnt FROM DemoTable841 GROUP BY Value;
-- เรียงตามจำนวนมากไปน้อย
SELECT Value, COUNT(*) as cnt FROM DemoTable841 GROUP BY Value ORDER BY cnt DESC;
-- กรองกลุ่มที่มีจำนวนมากกว่า 1 (HAVING)
SELECT Value, COUNT(*) as cnt FROM DemoTable841 GROUP BY Value HAVING COUNT(*) > 1;
สรุป
SELECT column, COUNT(*) FROM table GROUP BY column เป็นรูปแบบมาตรฐานสำหรับสรุปจำนวนข้อมูลต่อกลุ่ม