Tìm kiếm nhờ mệnh đề GROUP BY

Một phần của tài liệu cơ sở dữ liệu (Trang 60 - 62)

CHƯƠNG 4 : NGÔN NGỮ TRUY VẤN SQL

4.3. Các lệnh truy vấn cơ sở dữ liệu

4.3.3. Tìm kiếm nhờ mệnh đề GROUP BY

Hàm gom nhóm được áp dụng trên các nhóm b ộ có cùng thu ộc tính trong quan hệ, mỗi nhóm bao g ồm tập hợp các bộ có cùng giá tr ị trên các thu ộc tính gom nhóm.

Lưu ý: S ử dụng mệnh đề GROUP BY để chỉ ra các thuộc tính gom nhóm, các thuộc tính trong mệnh đề SELECT nằm ngồi một hàm thư viện thì phải xuất hiện trong mệnh đề GROUP BY.

Cú pháp t rong SQL

SELECT < (các) thuộc tính [các hàm kết hợp]> FROM < bảng 1 >, < bảng 2 >, …

WHERE < điều kiện chọn >

GROUP BY < ( các ) thuộc tính gom nhóm > [HAVING < điều kiện trên nhóm > ]

– Mệnh đề HAVING lấy các giá trị của hàm gom nhóm ch ỉ trên những nhóm nào thỏa mãn điều kiện nhất định.

– Mệnh đề HAVING dùng để chỉ điều kiện lọc trên các nhóm khơng ph ải điều kiện lọc trên từng bộ.

– Điều kiện trong mệnh đề HAVING được thực hiện sau khi gom nhóm các bộ. – SQL xử lý câu truy vấn chứa mệnh đề GROUP BY và HAVING theo cách như

+ Chọn tất cả các dòng th ỏa mãn điều kiện được chỉ ra trong mệnh đề WHERE. + Từ các dịng này hình thành các nhóm t ương ứng với mệnh đề GROUP BY. + Bỏ qua tất cả các nhóm khơng th ỏa mãn điều kiện trong mệnh đề HAVING. + Áp d ụng các hàm thư viện cho mỗi nhóm.

+ Rút trích các giá tr ị đối với các cột và hàm k ết hợp được liệt kê trong mệnh đề SELECT.

Ví dụ 4.17: Liệt kê danh sách tên l ớp và số lượng sinh viên trong từng lớp. SELECT TENLOP, COUNT(*) AS SISO

FROM SINHVIEN, LOP

WHERE SINHVIEN.MALOP=LOP.MALOP GROUP BY TENLOP

Kết quả trả về là bảng dữ liệu sau:

TENLOP SISO

Trung cấp tin học 1 khóa 27 2

Trung cấp tin học 2 khóa 27 1

Cao đẳng tin học khóa 07 3

Cao đẳng tin học 1 khóa 08 2

Cao đẳng tin học 2 khóa 08 3

Trung cấp thực phẩm 1 khóa 27 2

Trung cấp thực phẩm 2 khóa 27 3

Cao đẳng hóa học khóa 08 1

Cao đẳng điện tử khóa 09 1

Cao đẳng sinh học khóa 09 1

Cao đẳng thực phẩm khóa 09 1

Ví dụ 4.18: Liệt kê danh sách tên l ớp có số lượng sinh viên ít nhất là 3. SELECT TENLOP

FROM SINHVIEN, LOP

WHERE SINHVIEN.MALOP=LOP.MALOP GROUP BY TENLOP

HAVING COUNT(*)>=3 Kết quả như sau:

TENLOP Cao đẳng tin học khóa 07 Cao đẳng tin học 2 khóa 08 Trung cấp thực phẩm 2 khóa 27

Một phần của tài liệu cơ sở dữ liệu (Trang 60 - 62)

Tải bản đầy đủ (DOC)

(136 trang)
w