Truy vấn gom nhóm (group by)

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Công nghệ thông tin - Cao đẳng) - Trường Cao đẳng nghề Đồng Tháp (Trang 43 - 45)

- DOUBLE PRECISION

4. Ngôn ngữ truy vấn dữ liệu 1 Truy vấn đơn giản

4.4 Truy vấn gom nhóm (group by)

Cú pháp

SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>

GROUP BY <danh sách các cột gom nhóm>

 Sau khi gom nhóm

- Mỗi nhóm các bộ sẽ có cùng giá trị tại các thuộc tính gom nhóm

Ví dụ 10

Cho biết lƣơng cao nhất, lƣơng trung binh của mỗi đơn vị? Thông tin đƣa ra gồm: lluong lon nhat, luong tb, tenphg, maphg.

SELECT Max(NHANVIEN.LUONG) AS lonnhat, Avg(NHANVIEN.LUONG) AS trungbình, PHONGBAN.TENPhg, PHONGBAN.MAPHG

FROM PHONGBAN INNER JOIN (NHANVIEN INNER JOIN PHANCONG ON NHANVIEN.MANV = PHANCONG.MA_NVIEN) ON PHONGBAN.MAPHG = PHANCONG.MAPHG

GROUP BY PHONGBAN.TENPhg, PHONGBAN.MAPHG

Cho biết số lƣợng nhân viên của từng phòng ban

SELECT Count(MANV) AS [SL NV],TENPhg

FROM PHONGBAN INNER JOIN (NHANVIEN5 INNER JOIN PHANCONG ON NHANVIEN5.MANV = PHANCONG.MA_NVIEN) ON PHONGBAN.MAPHG = PHANCONG.MAPHG

GROUP BY PHONGBAN.TENPhg

44 Bài giảng csdl 60

Cú pháp

SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>

GROUP BY <danh sách các cột gom nhóm> HAVING <điều kiện trên nhóm>

Ví dụ 11:

Cho biết những nhân viên tham gia từ 2 đề án trở lên

SELECT MA_NVIEN, Count(MA_NVIEN) AS nhanventhamga

FROM PHANCONG GROUP BY MA_NVIEN

HAVING Count(MA_NVIEN)>=2

Cho biết những phòng ban (TENPHG) có lƣơng trung bình của các nhân viên lớn lơn 20000

SELECT TENPhg, Avg(LUONG) AS tb luong FROM PHONGBAN INNER JOIN (NHANVIEN INNER JOIN PHANCONG ON NHANVIEN.MANV = PHANCONG.MA_NVIEN) ON PHONGBAN.MAPHG = PHANCONG.MAPHG GROUP BY PHONGBAN.TENPhg HAVING Avg(LUONG)>20000 Nhận xét  Mệnh đề GROUP BY

- Các thuộc tính trong mệnh đề SELECT (trừ những thuộc tính trong các hàm kết hợp) phải xuất hiện trong mệnh đề GROUP BY

 Mệnh đề HAVING

- Sử dụng các hàm kết hợp trong mệnh đề SELECT để kiểm tra một số điều kiện nào đó

- Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc trên từng bộ

- Sau khi gom nhóm điều kiện trên nhóm mới đƣợc thực hiện

Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và HAVING

- (1) Chọn ra những dòng thỏa điều kiện trong mệnh đề WHERE

- (2) Những dịng này sẽ đƣợc gom thành nhiều nhóm tƣơng ứng với mệnh đề GROUP BY

- (3) Áp dụng các hàm kết hợp cho mỗi nhóm

- (4) Bỏ qua những nhóm khơng thỏa điều kiện trong mệnh đề HAVING

- (5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh đề SELECT

Ví dụ 12a: Tìm 3 nhân viên có lƣơng cao nhất

SELECT TENNV

FROM NHANVIEN NV1 WHERE 2 >= (

45 Bài giảng csdl 60

FROM NHANVIEN NV2

WHERE NV2.LUONG>NV1.LUONG )

Ví dụ 12b: Tìm tên các nhân viên đƣợc phân công làm tất cả các đồ án

SELECT MANV, TENVN

FROM NHANVIEN, PHANCONG WHERE MANV=MA_NVIEN GROUP BY MANV, TENNV HAVING COUNT(*) = (

SELECT COUNT(*) FROM DEAN )

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Công nghệ thông tin - Cao đẳng) - Trường Cao đẳng nghề Đồng Tháp (Trang 43 - 45)

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

(61 trang)