1. Giới thiệu
Trong SQL, các hàm COUNT() và SUM() được sử dụng để thực hiện các phép tính tổng hợp. Hàm COUNT() dùng để đếm số lượng bản ghi, trong khi hàm SUM() giúp tính tổng giá trị của một cột. Cả hai hàm này đều rất hữu ích trong việc phân tích dữ liệu và thực hiện các truy vấn tổng hợp trong cơ sở dữ liệu.
Bài viết này sẽ hướng dẫn chi tiết về cách sử dụng hai hàm COUNT() và SUM() kèm theo các ví dụ minh họa để giúp bạn dễ dàng áp dụng trong các truy vấn SQL thực tế.
2. SQL COUNT() là gì?
Hàm COUNT() trong SQL được sử dụng để đếm số lượng bản ghi thỏa mãn điều kiện truy vấn. Bạn có thể sử dụng hàm này để đếm tất cả các bản ghi hoặc chỉ đếm các bản ghi không có giá trị NULL trong một cột cụ thể.
Cú pháp tổng quát của SQL COUNT():
SELECT COUNT(column_name)
FROM table_name
WHERE condition;column_name: Tên cột mà bạn muốn đếm (có thể chứa giá trị NULL hoặc không).table_name: Tên bảng chứa dữ liệu.condition: Điều kiện để lọc các bản ghi cần đếm (tùy chọn).
Nếu bạn muốn đếm tất cả các bản ghi, bạn có thể sử dụng COUNT(*).
3. SQL SUM() là gì?
Hàm SUM() trong SQL được sử dụng để tính tổng giá trị của một cột số. Hàm này thường được sử dụng với các cột chứa giá trị kiểu số như INTEGER, FLOAT, DECIMAL, v.v.
Cú pháp tổng quát của SQL SUM():
SELECT SUM(column_name)
FROM table_name
WHERE condition;column_name: Tên cột mà bạn muốn tính tổng (phải là kiểu số).table_name: Tên bảng chứa dữ liệu.condition: Điều kiện lọc các bản ghi cần tính tổng (tùy chọn).
4. Cách sử dụng SQL COUNT() và SUM()
a. Sử dụng SQL COUNT() để đếm tất cả các bản ghi
Bạn có thể sử dụng COUNT(*) để đếm tất cả các bản ghi trong bảng, bất kể cột nào có giá trị NULL hay không.
Ví dụ 1: Đếm tất cả các nhân viên trong bảng employees
SELECT COUNT(*) AS total_employees
FROM employees;Câu lệnh này sẽ trả về số lượng tất cả các nhân viên trong bảng employees.
b. Sử dụng SQL COUNT() với điều kiện WHERE
Bạn có thể kết hợp COUNT() với WHERE để chỉ đếm các bản ghi thỏa mãn điều kiện cụ thể.
Ví dụ 2: Đếm số nhân viên thuộc phòng ban "Sales"
SELECT COUNT(*) AS sales_employees
FROM employees
WHERE department = 'Sales';Câu lệnh này sẽ trả về số lượng nhân viên làm việc trong phòng ban "Sales".
c. Sử dụng SQL COUNT() để đếm giá trị không phải NULL
Bạn có thể sử dụng COUNT(column_name) để đếm số lượng các bản ghi có giá trị không phải NULL trong một cột cụ thể.
Ví dụ 3: Đếm số nhân viên có mức lương không phải NULL
SELECT COUNT(salary) AS employees_with_salary
FROM employees;Câu lệnh này sẽ trả về số lượng nhân viên có mức lương (bỏ qua những bản ghi có giá trị NULL trong cột salary).
d. Sử dụng SQL SUM() để tính tổng giá trị
Hàm SUM() được sử dụng để tính tổng giá trị của một cột số.
Ví dụ 4: Tính tổng lương của tất cả nhân viên
SELECT SUM(salary) AS total_salary
FROM employees;Câu lệnh này sẽ trả về tổng số lương của tất cả nhân viên trong bảng employees.
e. Sử dụng SQL SUM() với điều kiện WHERE
Tương tự như COUNT(), bạn có thể kết hợp SUM() với WHERE để tính tổng giá trị cho các bản ghi thỏa mãn điều kiện.
Ví dụ 5: Tính tổng lương của nhân viên trong phòng ban "Sales"
SELECT SUM(salary) AS total_sales_salary
FROM employees
WHERE department = 'Sales';Câu lệnh này sẽ trả về tổng số lương của tất cả nhân viên thuộc phòng ban "Sales".
f. Sử dụng SQL SUM() và COUNT() với GROUP BY
Bạn có thể sử dụng các hàm COUNT() và SUM() kết hợp với GROUP BY để nhóm dữ liệu và tính tổng hoặc đếm số lượng cho từng nhóm.
Ví dụ 6: Đếm số nhân viên và tổng lương trong mỗi phòng ban
SELECT department, COUNT(*) AS employee_count, SUM(salary) AS total_salary
FROM employees
GROUP BY department;Câu lệnh này sẽ trả về số lượng nhân viên và tổng lương cho từng phòng ban.
5. Các ví dụ về SQL COUNT() và SUM()
Ví dụ 1: Đếm số lượng sản phẩm trong bảng products
SELECT COUNT(*) AS total_products
FROM products;Ví dụ 2: Đếm số lượng sản phẩm có giá lớn hơn 1 triệu
SELECT COUNT(*) AS expensive_products
FROM products
WHERE price > 1000000;Ví dụ 3: Tính tổng giá trị của các sản phẩm trong bảng products
SELECT SUM(price) AS total_price
FROM products;Ví dụ 4: Tính tổng doanh thu của các đơn hàng có giá trị trên 5 triệu
SELECT SUM(total_amount) AS total_revenue
FROM orders
WHERE total_amount > 5000000;Ví dụ 5: Tính tổng doanh thu và đếm số đơn hàng theo khách hàng
SELECT customer_id, COUNT(*) AS total_orders, SUM(total_amount) AS total_revenue
FROM orders
GROUP BY customer_id;Xem thêm các ví dụ về COUNT và SUM tại đây!
6. Một số lưu ý khi sử dụng SQL COUNT() và SUM()
a. Xử lý giá trị NULL
- Hàm
COUNT()với cột cụ thể sẽ không đếm các bản ghi có giá trịNULLtrong cột đó. - Hàm
SUM()sẽ bỏ qua các giá trịNULLkhi tính tổng.
b. Sử dụng DISTINCT với COUNT()
Bạn có thể sử dụng từ khóa DISTINCT trong COUNT() để chỉ đếm các giá trị khác nhau (không trùng lặp) trong một cột.
Ví dụ: Đếm số lượng phòng ban khác nhau trong bảng employees
SELECT COUNT(DISTINCT department) AS unique_departments
FROM employees;c. Cẩn thận với các phép tính tổng trên dữ liệu không hợp lệ
Khi sử dụng SUM() trên các cột không phải kiểu số, MySQL sẽ báo lỗi. Vì vậy, bạn cần đảm bảo rằng cột mà bạn tính tổng chứa giá trị hợp lệ.
d. Hiệu suất khi làm việc với bảng lớn
Khi tính toán trên bảng có nhiều bản ghi, hiệu suất có thể bị ảnh hưởng. Để cải thiện hiệu suất, hãy xem xét việc tạo chỉ mục (index) cho các cột thường xuyên được sử dụng trong các phép tính tổng hợp.
Kết luận
Hàm COUNT() và SUM() trong SQL là những công cụ mạnh mẽ giúp bạn thực hiện các phép tính tổng hợp và phân tích dữ liệu hiệu quả. COUNT() được sử dụng để đếm số lượng bản ghi, trong khi SUM() giúp tính tổng giá trị của các cột số. Khi kết hợp với các câu lệnh khác như WHERE, GROUP BY, chúng giúp bạn dễ dàng lọc và tổng hợp dữ liệu theo nhiều cách khác nhau.
Hãy thử áp dụng các kiến thức này trong các bài tập và dự án thực tế trên CodeTutHub để thành thạo hơn trong việc thao tác dữ liệu với SQL!









