Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การใช้ COUNT() หลายเงื่อนไขในคำสั่ง MySQL เดียว

การนับข้อมูลหลายเงื่อนไขพร้อมกันด้วย 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;

ผลลัพธ์

AgeAllSingleCount
212
223
233

เทคนิคขั้นสูง: 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

totalage_21age_22age_23age_22_plus
82336

สรุป

  • GROUP BY: เหมาะสำหรับนับตามค่าที่แตกต่างของคอลัมน์ (Distinct values)
  • Conditional COUNT/SUM: เหมาะสำหรับนับเงื่อนไขเฉพาะเจาะจง หลายเงื่อนไขในแถวเดียว
  • ใช้ COUNT(*) นับแถวทั้งหมด, COUNT(column) นับเฉพาะค่าที่ไม่ NULL