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

Một phần của tài liệu Tài liệu học tập Cơ sở dữ liệu (Trang 78 - 81)

Khi truy vấn mẩu tin trờn một hay nhiều bảng dữ liệu, thụng thường cú những bản ghi nào đú cựng giỏ trị.

Mệnh đề GROUP BY…được thờm vào SQL bởi vỡ cỏc hàm tập hợp (như SUM) trả về một tập hợp của cỏc giỏ trị trong cột mỗi khi chỳng được gọi, và nếu khụng cú GROUP BY ta khụng thể nào tớnh được tổng của cỏc giỏ trị theo từng nhúm riờng lẻ trong cột.

Cỳ phỏp của GROUP BY như sau:

SELECT tờn_cột, SUM (tờn_cột) FROM tờn_bảng GROUP BY tờn_cột

Vớ dụ 1:

Giả sử ta cú bảng Sales như sau:

Company Amount

W3Schools 5500

IBM 4500

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Cõu lệnh SQL sau:

SELECT Company, SUM (Amount) FROM Sales

sẽ trả về kết quả:

Company SUM(Amount)

W3Schools 17100

IBM 17100

W3Schools 17100

Kết quả trả về ở trờn đụi khi khụng phải là cỏi mà ta mong đợi. Ta thờm mệnh đề GROUP BY vào trong cõu lệnh SQL:

SELECT Company, SUM (Amount) FROM Sales GROUP BY Company và kết quả trả về lần này sẽ là:

Company SUM(Amount)

W3Schools 12600

IBM 4500

Kết quả này đỳng là cỏi mà ta mong muốn.

Vớ dụ 2: Cho cơ sở dữ liệu quản lý thụng tin bỏn hàng của cỏc đại lý gồm cỏc quan hệ sau:

 S(S#, Sname, City, Status)

 P(P#, Pname, Color, Weight, Price)  SP(S#, P#, Sdate, QTY)

Tỡm số lượng cung cấp lớn nhất của từng mặt hàng? Select P#, max (QTY)

From SP Group by P#

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Khi sử dụng Group by ta thường sử dụng mệnh đề HAVING đi kốm. Having được thờm vào SQL vỡ mệnh đề WHERE khụng ỏp dụng được đối với cỏc hàm tập hợp (như SUM). Nếu khụng cú HAVING, ta khụng thể nào kiểm tra được điều kiện với cỏc hàm tập hợp.

Cỳ phỏp của HAVING như sau:

SELECT tờn_cột, SUM (tờn_cột) FROM tờn_bảng

GROUP BY tờn_cột

HAVING SUM (tờn_cột) điều_kiện giỏ_trị

Ta sử dụng lại bảng Sales ở trờn. Cõu lệnh SQL sau:

SELECT Company, SUM (Amount) FROM Sales GROUP BY Company

HAVING SUM (Amount) > 10000 sẽ trả về kết quả:

Bảng SP

KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CễNG NGHIỆP

Chỳ ý:

 Mệnh đề GROUP BY

 Cỏc thuộc tớnh trong mệnh đề GROUP BY phải được xuất hiện trong

mệnh đề SELECT.

 Mệnh đề HAVING:

 Chỉ kiểm tra điều kiện trờn nhúm, mệnh đề Having khụng lọc trờn từng

bản ghi. (Điều kiện trong mệnh đề Having tỏc động trờn cỏc bản ghi của một nhúm)

 Điều kiện trờn nhúm (ở mệnh đề HAVING) được thực hiện sau khi gom

nhúm.

 Điều kiện trong mệnh đề Where tỏc động trờn toàn bộ cỏc bản ghi của bảng

Một phần của tài liệu Tài liệu học tập Cơ sở dữ liệu (Trang 78 - 81)

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

(200 trang)