ฟังก์ชัน COUNT() ใน SQL ใช้สำหรับนับจำนวนแถว (rows) ในตารางที่ตรงตามเงื่อนไขที่ระบุในคำสั่ง SQL ซึ่งมีหลายรูปแบบการใช้งาน ขึ้นอยู่กับลักษณะข้อมูลที่ต้องการนับ
รูปแบบการใช้งาน COUNT()
- COUNT(*): นับจำนวนแถวทั้งหมดในตาราง (ไม่ว่าจะมีค่าว่างหรือไม่ก็ตาม)
- COUNT(column_name): นับจำนวนแถวที่มีค่าในคอลัมน์ที่ระบุ (จะไม่นับค่า NULL)
- COUNT(DISTINCT column_name): นับจำนวนแถวที่มีค่าไม่ซ้ำกันในคอลัมน์ที่ระบุ
ตัวอย่างการสร้างฐานข้อมูลและการใช้ COUNT()
สมมติว่าเรามีตารางฐานข้อมูลชื่อ employees ซึ่งมีข้อมูลเกี่ยวกับพนักงานในบริษัทดังนี้
สร้างตารางข้อมูลตัวอย่าง
SQL
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department VARCHAR(50),
salary DECIMAL(10, 2)
);
INSERT INTO employees (employee_id, first_name, last_name, department, salary) VALUES
(1, 'John', 'Doe', 'HR', 50000),
(2, 'Jane', 'Smith', 'IT', 60000),
(3, 'Bob', 'Johnson', 'IT', 60000),
(4, 'Alice', 'Brown', 'Marketing', NULL),
(5, 'Charlie', 'Davis', 'Marketing', 55000);
การใช้ COUNT(*) เพื่อหาจำนวนแถวทั้งหมดในตาราง
คำสั่งนี้จะนับจำนวนแถวทั้งหมดในตาราง employees
SQL
SELECT COUNT(*) AS total_employees FROM employees;ผลลัพธ์
total_employees
---------------
5
การใช้ COUNT(column_name) เพื่อนับจำนวนแถวที่มีค่าที่ไม่ใช่ NULL
ในกรณีที่ต้องการนับจำนวนพนักงานที่มีการระบุเงินเดือน (ไม่นับค่า NULL)
SQL
SELECT COUNT(salary) AS employees_with_salary FROM employees;ผลลัพธ์
employees_with_salary
---------------------
4
การใช้ COUNT(DISTINCT column_name) เพื่อนับค่าที่ไม่ซ้ำกัน
หากต้องการนับจำนวนแผนกที่ไม่ซ้ำกันในตาราง
SQL
SELECT COUNT(DISTINCT department) AS unique_departments FROM employees;ผลลัพธ์
unique_departments
------------------
3
การใช้ COUNT() ร่วมกับ GROUP BY
หากต้องการนับจำนวนพนักงานในแต่ละแผนก สามารถเขียนคำสั่งดังนี้
SQL
SELECT department, COUNT(*) AS employees_in_department
FROM employees
GROUP BY department;ผลลัพธ์

การใช้ COUNT() ร่วมกับเงื่อนไขใน WHERE
หากต้องการนับจำนวนพนักงานที่มีเงินเดือนสูงกว่า 55,000
SQL
SELECT COUNT(*) AS employees_high_salary
FROM employees
WHERE salary > 55000;ผลลัพธ์
employees_high_salary
---------------------
2
