ใช้ COUNT(*) ร่วมกับ GROUP BY เพื่อนับจำนวนแถวข้อมูลในแต่ละกลุ่มของคอลัมน์ ENUM
ตัวอย่างการใช้งาน
1. สร้างตารางมีคอลัมน์ ENUM
mysql> CREATE TABLE DemoTable (
UserName VARCHAR(20),
UserType ENUM('New User','Registered User')
);
Query OK, 0 rows affected (0.60 sec)
2. เพิ่มข้อมูลทดสอบ
mysql> INSERT INTO DemoTable VALUES('Chris','New User');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('David','New User');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable VALUES('Mike','Registered User');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('Sam','New User');
Query OK, 1 row affected (0.10 sec)
3. แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable; +----------+-----------------+ | UserName | UserType | +----------+-----------------+ | Chris | New User | | David | New User | | Mike | Registered User | | Sam | New User | +----------+-----------------+
4. คำสั่งนับจำนวนตามประเภทผู้ใช้
mysql> SELECT COUNT(*), UserType FROM DemoTable GROUP BY UserType;
5. ผลลัพธ์
+----------+-----------------+ | COUNT(*) | UserType | +----------+-----------------+ | 3 | New User | | 1 | Registered User | +----------+-----------------+
ขยายความสามารถ
สามารถเพิ่มเงื่อนไขด้วย HAVING ได้ เช่น นับเฉพาะกลุ่มที่มีมากกว่า 1 คน:
mysql> SELECT COUNT(*), UserType
-> FROM DemoTable
-> GROUP BY UserType
-> HAVING COUNT(*) > 1;
สรุป
GROUP BY บนคอลัมน์ ENUM ทำงานได้อย่างสมบูรณ์ เนื่องจาก ENUM เก็บค่าเป็นดัชนีตัวเลขภายใน ทำให้การจัดกลุ่มและเรียงลำดับมีประสิทธิภาพสูง