3.6.GOM NHÓM DỮ LIỆU– MỆNH ĐỀ GROU PB Y

Một phần của tài liệu 1353062502Giao trinh Co so du lieu (Trang 60 - 63)

”);

kết quả của câu hỏi con được sử dụng trong phép so sánh với một giá

trị khác trong biểu thức điều kiện của câu hỏi b ao nó. Các phép so sánh có

dạng

<phep so sánh>[<lượng từ>](select - câu hỏi co n) trong đó phép so sánh có thể là phép so sánh số h ọc hoặc phép so sánh trên tập hợp (chúng tôi đã đề cập ở phần 3.1) <lượng từ > có thể là ALL,AN Y (hoặc SOME). Phép so sánh bằng

ANYcó thể được thay tương đương bằng phép to án IN, phép so sánh <>ALL

có thể thay tương đương bằng phép toán NOT IN.

3.6.GOM NHÓM DỮ LIỆU– MỆNH ĐỀ GROUP BY Y

Khi cần tính toán trên các bộ theo một nhó m nào đó - theo một thuộc

tính nào đó, thì ta dùng mệnh đề GROUP BY, c hẳng hạn cần tính điểm trung

bình chung tất cả các môn học cho tất cả các si nh viên, hay là cần tính số

Trường Trung cấp Kinh tế - Kỹ thuật Hà Nội I Giáo Trình Cơ Sở Dữ Liệu

lượng sinh viên cho mỗi lớp, mỗi khoa, đếm số lượng sinh viên nữ của mỗi

khoa, đếm số lượng sinh viên của mỗi tỉnh,…

Mệnh đề GROUP BY <thuộc tính> dùng để phân nhóm dữ liệu. những

bộ của bảng có cùng giá trị trên các thuộc tính này sẽ tạo thành một nhóm.

Ví dụ 3.12:

Lập bảng điểm trung bình lần 1 các môn họ c của các sinh viên của lớp

có mã lớp là CDTH2A. Danh sách cần: MA SV, HOTENSV,DIEMTB( (trong đó

DIEMTB là thuộc tính tự đặt).

SELECT KETQUA.MASV, HOTENSV,AVG(D IEMTHI) AS DIEMTB

FROM SINHVIEN,KETQUA

WHERE MALOP=”CDTH2A” AND LANTHI= 1 AND

SINHVIEN.MASV=KETQUA.MASV GROUP BY KETQUA.MASV, HOTENSV

Mệnh đề HAVING <điều kiện trên nhóm>

Nếu cần kiểm tra điều kiện của một nhóm t hì dùng mệnh đề Having ,

chẳng hạn như cho biết những sinh viên nào có điểm trung bình các môn ≥ 8,

những khoa nào có nhiều hơn 100 sinh viên nữ,… Lưu ý những thuộc tính có tham gia vào m ệnh đề GROUP BY để phân

nhóm phải được liệt kê trong danh sách thuộc tính the o sau từ khóa SELECT.

Mệnh đề HAVING <điều kiện trên nhóm> đ ược sử dụng như là phép

chọn phối hợp với việc phân nhóm dữ liệu. (adsbygoogle = window.adsbygoogle || []).push({});

Giống như ở ví dụ 3.11 nhưng có thêm điề u kiện là điểm trung bình các

môn đã thi lớn hơn hoặc bằng 8.0.

SELECT KETQUA.MASV, HOTENSV,AVG(D IEMTHI) AS DIEMTB

FROM SINHVIEN,KETQUA,LOP

WHERE MALOP=”CDTH2A” AND LANTHI= 1 AND

SINHVIEN.MASV=KETQUA.MASV GROUP BY KETQUA.MASV, HOTENSV HAVING AVG(DIEMTHI)>=8.0;

Trường Trung cấp Kinh tế - Kỹ thuật Hà Nội I Giáo Trình Cơ Sở Dữ Liệu

Trang 40

Trong một lệnh truy vấn tổng hợp, ngoại trừ thành phần SELECT

bắt

buộc phải đặt lên đầu, thứ tự của các thành phần khác là tùy ý. Thứ tự dịch một

lệnh truy vấn tổng hợp là như sau:

FROM WHEREGROUP BY HAVING

SELECT ORDER BY

Suy cho cùng, các chương trình quản lý cũn g là việc kết xuất các báo

cáo từ các quan hệ, mà SQL cho phép tạo ra những qu an hệ này một cách tiện

lợi. Vì thế hiểu và vận dụng tốt lệnh truy vấn dữ liệu l à một việc làm cực kỳ hiệu

Trường Trung cấp Kinh tế - Kỹ thuật Hà Nội I Giáo Trình Cơ Sở Dữ Liệu

Trang 41

BÀI TẬP

Một phần của tài liệu 1353062502Giao trinh Co so du lieu (Trang 60 - 63)