Truy vấn dữ liệu - Phần 6¶
Tóm lược nội dung
Bài này trình bày câu lệnh SELECT có dùng hàm AVG() và mệnh đề gom nhóm dữ liệu.
Yêu cầu về cơ sở dữ liệu¶
Tiếp tục sử dụng cơ sở dữ liệu school_db như ở bài trước.
Tính giá trị trung bình¶
Hàm AVG()
Dùng để tính trung bình cộng của một thuộc tính kiểu số, bỏ qua giá trị NULL.
Kết hợp với INNER JOIN và GROUP BY¶
Ví dụ:
Yêu cầu:
Nhằm đánh giá chất lượng giảng dạy, hãy tính giá trị trung bình của cột điểm cuối kỳ theo từng môn. Kết quả trả về phải có tên môn học cụ thể.
Phân tích:
1. Quan sát lược đồ trên, ta thấy điểm cuối kỳ được lưu trong bảng scores, tên môn học được lưu trong bảng subjects.
Do đó, ta liên kết hai bảng này bằng INNER JOIN.
2. Để biết điểm trung bình của tất cả học sinh trong trường, ta dùng hàm AVG đối với cột final_test.
3. Để phân theo từng môn, ta thực hiện gom nhóm các mẫu tin theo tên môn.
Như vậy, mệnh đề GROUP BY sẽ là group by subject_name.
Cách thực hiện:
1. Viết mã lệnh SQL.
2. Chạy câu lệnh trên, kết quả như sau:
Kết hợp với INNER JOIN, WHERE và GROUP BY¶
Ví dụ:
Yêu cầu:
Tính giá trị trung bình của cột điểm cuối kỳ cho riêng môn Khoa học máy tính.
Phân tích:
Truy vấn này tương tự truy vấn trên, nhưng chỉ lấy môn Khoa học máy tính.
Như vậy, ta thêm mệnh đề WHERE vô truy vấn: where subject_name = 'Khoa học máy tính'.
Cách thực hiện:
1. Viết mã lệnh SQL.
2. Chạy câu lệnh trên, kết quả như sau:
Kết hợp với INNER JOIN, GROUP BY và HAVING¶
Ví dụ:
Yêu cầu:
Lọc ra các môn mà giá trị trung bình của cột điểm cuối kỳ lớn hơn 7.
Phân tích:
Truy vấn này tương tự truy vấn trên, nhưng không lấy môn Khoa học máy tính, mà lấy các môn nào có giá trị trung bình lớn hơn 7.
Như vậy, ta bỏ mệnh đề WHERE của truy vấn trên, thay bằng mệnh đề HAVING: having avg(final_test) > 7.
Cách thực hiện:
1. Viết mã lệnh SQL.
2. Chạy câu lệnh trên, kết quả như sau:
Mã nguồn¶
Code đầy đủ được đặt tại:



