跳到主要内容

เนื้อหาภาษาไทย / 泰语内容

系统指南 内容已审核

ฟังก์ชัน COUNT() คืออะไร?

บทความนี้อธิบายการใช้งานฟังก์ชัน `COUNT()` ใน SQL ซึ่งเป็นฟังก์ชันสำหรับนับจำนวนแถวในตาราง โดยมีสองรูปแบบหลักคือ `COUNT(*)` ที่นับทุกแถว และ `COUNT(column_name)...

ฟังก์ชัน COUNT() คืออะไร?

ในบทที่แล้ว เราได้เรียนรู้การใช้ `BETWEEN` Clause เพื่อกรองข้อมูลในช่วงที่กำหนด ในบทนี้ เราจะมาเรียนรู้เกี่ยวกับฟังก์ชัน `COUNT()` ซึ่งเป็นฟังก์ชันที่สำคัญมากในการนับจำนวนแถวในตาราง ฟังก์ชันนี้ช่วยให้เราทราบจำนวนข้อมูลที่ตรงตามเงื่อนไขที่กำหนดได้อย่างรวดเร็วและง่ายดาย

ฟังก์ชัน `COUNT()` เป็น Aggregate function ใน SQL ซึ่งหมายความว่ามันจะทำการคำนวณจากหลายๆ แถวในตารางและคืนค่าออกมาเพียงค่าเดียว

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

ฟังก์ชัน `COUNT()` มีรูปแบบการใช้งานหลักๆ อยู่ 2 แบบ คือ

  • COUNT(*): นับจำนวนแถวทั้งหมดในตาราง (รวมถึงแถวที่มีค่า NULL)
  • COUNT(column_name): นับจำนวนแถวที่มีค่าในคอลัมน์ที่ระบุ (ไม่รวมแถวที่มีค่า NULL)

COUNT(*) - การนับจำนวนแถวทั้งหมด

การใช้ COUNT(*) เป็นวิธีที่ง่ายที่สุดในการนับจำนวนแถวทั้งหมดในตาราง ไม่ว่าคอลัมน์ใดๆ จะมีค่า NULL หรือไม่ก็ตาม

ตัวอย่าง: สมมติว่าเรามีตารางชื่อ `customers` ที่เก็บข้อมูลลูกค้า

CREATE TABLE customers (
    customer_id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    email VARCHAR(100),
    phone_number VARCHAR(20)
);

INSERT INTO customers (first_name, last_name, email, phone_number) VALUES
('John', 'Doe', 'john.doe@example.com', '123-456-7890'),
('Jane', 'Smith', 'jane.smith@example.com', '987-654-3210'),
('Peter', 'Jones', 'peter.jones@example.com', '555-123-4567'),
('Alice', 'Brown', NULL, '111-222-3333');

ถ้าเราต้องการทราบจำนวนลูกค้าทั้งหมดในตาราง เราสามารถใช้คำสั่ง SQL ดังนี้:

SELECT COUNT(*) AS total_customers
FROM customers;

ผลลัพธ์ที่ได้จะเป็น:

+-----------------+
| total_customers |
+-----------------+
|               4 |
+-----------------+

แสดงว่ามีลูกค้าทั้งหมด 4 คนในตาราง `customers`

COUNT(column_name) - การนับจำนวนแถวที่มีค่าในคอลัมน์

การใช้ COUNT(column_name) จะนับเฉพาะแถวที่มีค่าในคอลัมน์ที่ระบุเท่านั้น แถวที่มีค่า NULL ในคอลัมน์นั้นจะไม่ถูกนับ

ตัวอย่าง: จากตาราง `customers` เดิม ถ้าเราต้องการทราบจำนวนลูกค้าที่มีอีเมล เราสามารถใช้คำสั่ง SQL ดังนี้:

SELECT COUNT(email) AS customers_with_email
FROM customers;

ผลลัพธ์ที่ได้จะเป็น:

+-----------------------+
| customers_with_email |
+-----------------------+
|                     3 |
+-----------------------+

แสดงว่ามีลูกค้า 3 คนที่มีข้อมูลอีเมลอยู่ในตาราง `customers` (Alice Brown ไม่มีอีเมล)

การใช้งาน COUNT() ร่วมกับ WHERE Clause

เราสามารถใช้ `COUNT()` ร่วมกับ `WHERE` Clause เพื่อนับจำนวนแถวที่ตรงตามเงื่อนไขที่กำหนด

ตัวอย่าง: ถ้าเราต้องการทราบจำนวนลูกค้าที่มีเบอร์โทรศัพท์ขึ้นต้นด้วย '1' เราสามารถใช้คำสั่ง SQL ดังนี้:

SELECT COUNT(*) AS customers_with_phone_prefix_1
FROM customers
WHERE phone_number LIKE '1%';

ผลลัพธ์ที่ได้จะเป็น:

+-----------------------------------+
| customers_with_phone_prefix_1 |
+-----------------------------------+
|                               2 |
+-----------------------------------+

แสดงว่ามีลูกค้า 2 คนที่มีเบอร์โทรศัพท์ขึ้นต้นด้วย '1'

การใช้งาน COUNT() ร่วมกับ GROUP BY Clause

เราสามารถใช้ `COUNT()` ร่วมกับ `GROUP BY` Clause เพื่อนับจำนวนแถวในแต่ละกลุ่มที่กำหนด

ตัวอย่าง: สมมติว่าเรามีตารางชื่อ `orders` ที่เก็บข้อมูลการสั่งซื้อสินค้า

CREATE TABLE orders (
    order_id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT,
    order_date DATE,
    total_amount DECIMAL(10, 2),
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

INSERT INTO orders (customer_id, order_date, total_amount) VALUES
(1, '2023-01-15', 100.00),
(2, '2023-02-20', 250.50),
(1, '2023-03-10', 75.00),
(3, '2023-04-05', 120.75),
(2, '2023-05-12', 300.00);

ถ้าเราต้องการทราบจำนวนการสั่งซื้อของลูกค้าแต่ละคน เราสามารถใช้คำสั่ง SQL ดังนี้:

SELECT customer_id, COUNT(*) AS number_of_orders
FROM orders
GROUP BY customer_id;

ผลลัพธ์ที่ได้จะเป็น:

+-------------+------------------+
| customer_id | number_of_orders |
+-------------+------------------+
|           1 |                2 |
|           2 |                2 |
|           3 |                1 |
+-------------+------------------+

แสดงว่าลูกค้าที่มี ID 1 และ 2 มีการสั่งซื้อ 2 ครั้ง ส่วนลูกค้าที่มี ID 3 มีการสั่งซื้อ 1 ครั้ง

กรณีใช้งานจริง

ฟังก์ชัน `COUNT()` มีประโยชน์อย่างมากในการวิเคราะห์ข้อมูลและสร้างรายงาน ตัวอย่างเช่น:

  • นับจำนวนผู้ใช้งานที่ลงทะเบียนในแต่ละช่วงเวลา
  • นับจำนวนสินค้าที่ขายได้ในแต่ละหมวดหมู่
  • นับจำนวนข้อผิดพลาดที่เกิดขึ้นในระบบ
  • นับจำนวนลูกค้าที่ทำการสั่งซื้อซ้ำ

ข้อผิดพลาดที่พบบ่อย

  • ลืมใส่ `AS` เพื่อตั้งชื่อให้กับคอลัมน์ผลลัพธ์: ทำให้ผลลัพธ์ที่ได้อ่านยากหรือไม่สามารถนำไปใช้งานต่อได้ ควรใช้ `AS` เพื่อตั้งชื่อที่สื่อความหมายให้กับคอลัมน์ที่ได้จาก `COUNT()`
  • เข้าใจผิดว่า `COUNT(column_name)` จะนับค่าที่ไม่ซ้ำ: `COUNT(column_name)` จะนับจำนวนแถวที่มีค่าในคอลัมน์นั้นๆ ไม่ได้นับค่าที่ไม่ซ้ำ หากต้องการนับค่าที่ไม่ซ้ำ ต้องใช้ `COUNT(DISTINCT column_name)`
  • ใช้ `COUNT(*)` ใน `WHERE` Clause: `COUNT(*)` เป็น Aggregate function ซึ่งไม่สามารถใช้ใน `WHERE` Clause ได้โดยตรง หากต้องการกรองข้อมูลก่อนนับ ต้องใช้ Subquery หรือ HAVING Clause

สรุป

ฟังก์ชัน `COUNT()` เป็นเครื่องมือที่สำคัญในการนับจำนวนแถวในตาราง MySQL ไม่ว่าจะเป็นการนับจำนวนแถวทั้งหมด การนับจำนวนแถวที่มีค่าในคอลัมน์ที่ระบุ หรือการนับจำนวนแถวในแต่ละกลุ่ม การเข้าใจและใช้งาน `COUNT()` อย่างถูกต้อง จะช่วยให้คุณสามารถวิเคราะห์ข้อมูลและสร้างรายงานได้อย่างมีประสิทธิภาพ

ในบทถัดไป เราจะมาเรียนรู้เกี่ยวกับฟังก์ชัน `SUM()` ซึ่งใช้ในการหาผลรวมของข้อมูลในคอลัมน์

Office.in.th Custom Service

想基于此结构开发或定制系统?

Office.in.th 承接企业级 Web Application、API Integration 以及政府/企业管理系统的设计与开发,并提供长期支持。

查看软件开发服务