CodeGym /Các khóa học /SQL SELF /Giới thiệu về hàm tổng hợp

Giới thiệu về hàm tổng hợp

SQL SELF
Mức độ, Bài học
Có sẵn

Hàm tổng hợp... Mấy cái này đúng là phù thủy trong thế giới phân tích dữ liệu luôn ấy! Chúng giúp biến hàng triệu dòng dữ liệu thành kết quả ngắn gọn, dễ hiểu. Nhờ chúng, tụi mình có thể đếm, tìm min/max, tính trung bình và làm đủ trò khác nữa. Giờ thì cùng nhau tìm hiểu từng cái một nha.

Hàm tổng hợp — là các hàm đặc biệt trong SQL, thực hiện thao tác trên nhóm dòng và trả về một kết quả duy nhất. Nếu so sánh vui thì giống như bạn gom hết thống kê về cà phê buổi sáng của mình, ví dụ: uống bao nhiêu cốc trong tuần, có cho đường không hay bao nhiêu ngày liên tục cho thêm kem.

Ví dụ các bài toán mà hàm tổng hợp giải quyết được:

  • Đếm tổng số bản ghi trong bảng.
  • Tìm giá trị nhỏ nhất hoặc lớn nhất trong một cột số.
  • Tính tổng các giá trị trong một cột.
  • Tính trung bình tất cả giá trị của một cột.
  • Lấy ra các giá trị duy nhất.

Nó hoạt động "bên trong" như thế nào?

SQL thực hiện hàm tổng hợp sau khi lấy dữ liệu bằng SELECT. Ví dụ, khi bạn dùng SUM() hoặc AVG(), SQL sẽ gom dữ liệu lại rồi mới tính toán trên các dòng đã chọn.

Các hàm tổng hợp cơ bản trong PostgreSQL

Cùng thực hành và xem top 5 "anh hùng" của chúng ta nhé:

  1. COUNT() — đếm số dòng.
  2. SUM() — tính tổng giá trị của một cột số.
  3. AVG() — tính giá trị trung bình.
  4. MIN() — tìm giá trị nhỏ nhất.
  5. MAX() — tìm giá trị lớn nhất.

Ví dụ sử dụng hàm tổng hợp

  1. Đếm dòng với COUNT()

Hàm COUNT() cho phép đếm tổng số dòng trong bảng hoặc số giá trị không rỗng trong một cột cụ thể.

Ví dụ: giả sử tụi mình có bảng students, lưu thông tin về sinh viên:

id name age grade
1 Otto Art 20 85
2 Maria Chi 22 90
3 Alex Lin 21 78
4 Anna Song 23 NULL

Cùng đếm tổng số sinh viên nhé:

SELECT 
    COUNT(*) AS tong_so_sinh_vien
FROM students;

Kết quả:

tong_so_sinh_vien
4

Giờ đếm số sinh viên có grade nhé:

SELECT 
    COUNT(grade) AS sinh_vien_co_diem
FROM students;

Kết quả:

sinh_vien_co_diem
3

Tại sao lại như vậy? Vì COUNT(column) sẽ bỏ qua giá trị NULL đó.

  1. Tính tổng với SUM()

Hàm SUM() dùng để tính tổng tất cả giá trị trong một cột số.

Ví dụ: cùng xem tổng điểm mà sinh viên đạt được là bao nhiêu nhé.

SELECT 
    SUM(grade) AS tong_diem
FROM students;

Kết quả:

tong_diem
253

Lưu ý: Nếu trong cột có NULL, chúng sẽ bị bỏ qua khi tính tổng.

  1. Giá trị trung bình với AVG()

Hàm AVG() tính giá trị trung bình của tất cả bản ghi số trong cột.

Ví dụ: tính điểm trung bình của sinh viên nhé.

SELECT 
    AVG(grade) AS diem_trung_binh
FROM students;

Kết quả:

diem_trung_binh
84.33

Bạn có thể thấy NULL lại bị bỏ qua tiếp.

  1. Min và max với MIN() và MAX()

Đôi khi cần tìm giá trị nhỏ nhất hoặc lớn nhất. Đó là lúc dùng MIN() và MAX().

Ví dụ: Tìm sinh viên trẻ nhất và già nhất nhé.

SELECT 
    MIN(age) AS sinh_vien_tre_nhat, 
    MAX(age) AS sinh_vien_gia_nhat
FROM students;

Kết quả:

sinh_vien_tre_nhat sinh_vien_gia_nhat
20 23

Chi tiết về mấy hàm này tụi mình sẽ nói kỹ hơn ở các bài sau nha.

Làm quen với NULL

Sắp tới sẽ có bài riêng về NULL, nhưng nói ngắn gọn thì NULL là không có giá trị. Không gì cả. Trống rỗng. Không có gì luôn!

Giả sử tụi mình có bảng students, lưu thông tin về sinh viên:

id name age grade hobbie
1 Otto Art 20 85
2 Maria Chi 22 90 Nhảy múa
3 Alex Lin 21 78
4 Anna Song 23

Tên và tuổi thì lúc nào cũng có, còn điểm và sở thích thì có thể không. Nếu trong ô bảng không có giá trị nào, thì người ta nói ô đó chứa NULL. NULL không phải là số cũng không phải là chuỗi, nó là ký hiệu đặc biệt, dùng để chỉ sự không có giá trị nào cả.

2
Nhiệm vụ
SQL SELF, mức độ, bài học
Đã khóa
Danh sách sản phẩm có giảm giá
Danh sách sản phẩm có giảm giá
2
Nhiệm vụ
SQL SELF, mức độ, bài học
Đã khóa
Kiểm tra trạng thái và thời hạn hiệu lực của gói đăng ký
Kiểm tra trạng thái và thời hạn hiệu lực của gói đăng ký
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION