SQL การใช้งานฟังก์ชัน COUNT

ฟังก์ชัน COUNT() ใน SQL ใช้สำหรับนับจำนวนแถว (rows) ในตารางที่ตรงตามเงื่อนไขที่ระบุในคำสั่ง SQL ซึ่งมีหลายรูปแบบการใช้งาน ขึ้นอยู่กับลักษณะข้อมูลที่ต้องการนับ

รูปแบบการใช้งาน COUNT()

  1. COUNT(*): นับจำนวนแถวทั้งหมดในตาราง (ไม่ว่าจะมีค่าว่างหรือไม่ก็ตาม)
  2. COUNT(column_name): นับจำนวนแถวที่มีค่าในคอลัมน์ที่ระบุ (จะไม่นับค่า NULL)
  3. 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
แชร์เรื่องนี้