Các hàm tổng hợp (aggregate function) tính ra một giá trị duy nhất từ một tập các dòng — COUNT, SUM, AVG, MIN, . Chúng thiết yếu cho việc tóm tắt dữ liệu (tổng, trung bình, đếm), đặc biệt khi kết hợp với .
Các hàm tổng hợp (aggregate function) tính ra một giá trị duy nhất từ một tập các dòng — COUNT, SUM, AVG, MIN, . Chúng thiết yếu cho việc tóm tắt dữ liệu (tổng, trung bình, đếm), đặc biệt khi kết hợp với .
MAXGROUP BYSELECT
COUNT(*) AS total_rows, -- đếm tất cả dòng
COUNT(email) AS rows_with_email, -- đếm email KHÔNG NULL (bỏ qua NULL!)
SUM(amount) AS total_amount, -- tổng của một cột
AVG(price) AS average_price, -- trung bình
MIN(price) AS lowest, -- nhỏ nhất
MAX(price) AS highest -- lớn nhất
FROM orders;
Mỗi hàm thu nhiều dòng về một giá trị. SUM/AVG làm việc với số; MIN/MAX với số, ngày hoặc chuỗi; COUNT với mọi thứ.
COUNT(*) -- đếm TẤT CẢ dòng (kể cả dòng có NULL)
COUNT(email) -- chỉ đếm dòng có email KHÔNG NULL
COUNT(DISTINCT country) -- đếm các giá trị KHÔNG NULL và DUY NHẤT
COUNT(*) đếm tất cả dòng, nhưng COUNT(column) chỉ đếm dòng mà cột đó không NULL — một khác biệt tinh tế nhưng quan trọng. COUNT(DISTINCT col) đếm các giá trị duy nhất.
-- tổng hợp THEO NHÓM thay vì toàn bảng
SELECT country, COUNT(*) AS users, AVG(age) AS avg_age
FROM users
GROUP BY country; -- một dòng kết quả cho mỗi quốc gia
-- → với mỗi quốc gia: có bao nhiêu user và độ tuổi trung bình của họ
Không có GROUP BY, hàm tổng hợp tóm tắt toàn bộ kết quả thành một dòng. Có GROUP BY, nó tạo ra một dòng tóm tắt cho mỗi nhóm — cách dùng điển hình, mạnh mẽ.
-- ❌ LỖI — không thể trộn một hàm tổng hợp với một cột không được group
SELECT name, COUNT(*) FROM users; -- name nào? mơ hồ
-- ✅ hoặc group theo nó, hoặc chỉ chọn các hàm tổng hợp
SELECT country, COUNT(*) FROM users GROUP BY country;
Các hàm tổng hợp thiết yếu cho việc tóm tắt và phân tích dữ liệu — tính tổng, trung bình, đếm và cực trị là nhu cầu thường xuyên trong báo cáo, phân tích, dashboard và logic ứng dụng, nên hiểu chúng là kiến thức SQL nền tảng.
Biết các hàm chính (COUNT, SUM, AVG, MIN, MAX) và cách chúng thu các tập dòng về giá trị duy nhất là cần thiết cho mọi việc tóm tắt dữ liệu.
Một chi tiết quan trọng và thường bị hiểu lầm là khác biệt giữa COUNT(*) và COUNT(column) (COUNT(*) đếm mọi dòng, COUNT(column) chỉ đếm giá trị không NULL — có thể cho kết quả khác nhau, gây bất ngờ), cùng với COUNT(DISTINCT) cho giá trị duy nhất.
Mạnh mẽ nhất, các hàm tổng hợp kết hợp với GROUP BY để tạo tóm tắt theo nhóm (đếm/trung bình theo từng nhóm) — nền tảng của các truy vấn phân tích.
Hiểu lỗi thường gặp rằng bạn không thể trộn hàm tổng hợp với cột không được group (một lỗi phổ biến) cũng quan trọng.
Vì tóm tắt dữ liệu là tác vụ database phổ biến (mọi báo cáo, dashboard và truy vấn phân tích đều dùng hàm tổng hợp), và vì hiểu các hàm, các điểm tinh tế của COUNT và đặc biệt là sự kết hợp với GROUP BY là nền tảng cho phân tích dữ liệu trong SQL, thành thạo các hàm tổng hợp là kiến thức cốt lõi, được áp dụng thường xuyên, thiết yếu khi làm việc với dữ liệu — bắc cầu giữa truy vấn cơ bản và sức mạnh tổng hợp, phân tích khiến SQL có giá trị cho báo cáo và phân tích chuyên sâu.