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ề: Tin học ứng dụng - Trung cấp) - Trường Cao đẳng Cộng đồng Đồng Tháp (Trang 40 - 42)

- DOUBLE PRECISION FLOAT, FLOAT(p)

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

4.5.Truy vấn Điều kiện trên nhóm (having)

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

39 Bài giảng csdl 60

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 >= ( SELECT COUNT(*) 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 )

40 Bài giảng csdl 60

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Tin học ứng dụng - Trung cấp) - Trường Cao đẳng Cộng đồng Đồng Tháp (Trang 40 - 42)

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

(57 trang)