การนับข้อมูลหลายเงื่อนไขพร้อมกันด้วย GROUP BY
ใน MySQL คุณสามารถนับจำนวนแถวตามเงื่อนไขหลายแบบใน Query เดียวได้โดยใช้ GROUP BY ร่วมกับฟังก์ชัน COUNT()
รูปแบบคำสั่งพื้นฐาน
SELECT your_column, COUNT(*)
FROM your_table_name
GROUP BY your_column;
ตัวอย่างการใช้งานจริง
1. สร้างตารางตัวอย่าง
CREATE TABLE MultipleCountDemo (
Id INT,
Name VARCHAR(100),
Age INT
);
2. เพิ่มข้อมูล
INSERT INTO MultipleCountDemo VALUES
(1, 'Carol', 21), (2, 'Sam', 21), (3, 'Bob', 22),
(4, 'John', 23), (5, 'David', 22), (6, 'Adam', 22),
(7, 'Johnson', 23), (8, 'Elizabeth', 23);
3. นับจำนวนคนแยกตามอายุ
SELECT Age, COUNT(*) AS AllSingleCount
FROM MultipleCountDemo
GROUP BY Age;
ผลลัพธ์
| Age | AllSingleCount |
|---|---|
| 21 | 2 |
| 22 | 3 |
| 23 | 3 |
เทคนิคขั้นสูง: Conditional Aggregation
หากต้องการนับเงื่อนไขเฉพาะเจาะจงในคอลัมน์เดียวกัน:
SELECT
COUNT(*) AS total,
COUNT(CASE WHEN Age = 21 THEN 1 END) AS age_21,
COUNT(CASE WHEN Age = 22 THEN 1 END) AS age_22,
COUNT(CASE WHEN Age = 23 THEN 1 END) AS age_23,
SUM(CASE WHEN Age >= 22 THEN 1 ELSE 0 END) AS age_22_plus
FROM MultipleCountDemo;
ผลลัพธ์ Conditional Aggregation
| total | age_21 | age_22 | age_23 | age_22_plus |
|---|---|---|---|---|
| 8 | 2 | 3 | 3 | 6 |
สรุป
- GROUP BY: เหมาะสำหรับนับตามค่าที่แตกต่างของคอลัมน์ (Distinct values)
- Conditional COUNT/SUM: เหมาะสำหรับนับเงื่อนไขเฉพาะเจาะจง หลายเงื่อนไขในแถวเดียว
- ใช้
COUNT(*)นับแถวทั้งหมด,COUNT(column)นับเฉพาะค่าที่ไม่ NULL