Bài MySQL 24: Lệnh HAVING trong MySQL

0
279

Xin chào các bạn, trong bài học ngày hôm nay mình sẽ hướng dẫn các bạn sử dụng câu lệnh HAVING để chỉ định một điều kiện lọc cho các nhóm hàng(row) hoặc nhóm tổng hợp.

Giới thiệu

Lệnh HAVING được sử dụng trong câu lệnh SELECT để xác định các điều kiện lọc cho một nhóm các hàng hoặc tập hợp.

Câu lệnh HAVING thường được sử dụng với lệnh GROUP BY để lọc các nhóm dựa trên một điều kiện cụ thể. Nếu câu lệnh GROUP BY bị bỏ qua thì câu lệnh HAVING hoạt động giống như câu lệnh WHERE.

Lưu ý rằng câu lệnh HAVING áp dụng một điều kiện lọc cho mỗi nhóm các hàng, trong khi câu lệnh WHERE áp dụng điều kiện lọc cho mỗi hàng riêng lẻ.

Ví dụ về câu lệnh HAVING

Chúng ta sẽ sử dụng bảng orderdetails trong cơ sở dữ liệu để xây dựng các ví dụ nhé.

Bạn có thể sử dụng câu lệnh GROUP BY để nhận số đơn đặt hàng, số lượng các mặt hàng được bán cho mỗi đơn đặt hàng và tổng doanh thu cho mỗi đơn đặt hàng, truy vấn như sau:

kết quả trả về là:

Bây giờ, bạn có thể tìm thấy đơn hàng nào có tổng doanh thu lớn hơn 1000 bằng cách sử dụng câu lệnh HAVING như sau:

kết quả trả về là:

Bạn có thể xây dựng một điều kiện phức tạp hơn trong câu lệnh HAVING bằng cách sử dụng các toán tử logic như ORAND. Giả sử bạn muốn tìm đơn đặt hàng có tổng doanh thu lớn hơn 1000 và chứa hơn 600 mục, bạn có thể sử dụng truy vấn sau:

kết quả trả về là:

Giả sử bạn muốn tìm tất cả các đơn đặt hàng đã bán và tổng doanh số lớn hơn 1500, bạn có thể JOIN bảng orderdetails với bảng orders sử dụng mệnh đề INNER JOIN và áp dụng điều kiện trên cột status và hàm tổng hợp total như truy vấn sau:

kết quả trả về là:

Câu lệnh HAVING chỉ hữu ích khi bạn sử dụng nó với câu lệnh GROUP BY để tạo đầu ra của các báo cáo mức cao. Ví dụ: bạn có thể sử dụng lệnh HAVING để trả lời các câu hỏi thống kê như tìm số đơn đặt hàng trong tháng này, quý này hoặc năm nay có tổng doanh thu lớn hơn 10 triệu.

Kết luận

Như vậy trong bài học ngày hôm nay mình đã hướng dẫn các bạn sử dụng câu lệnh HAVING để chỉ định các điều kiện lọc cho các nhóm hàng hoặc hàm tổng hợp. Trong bài học tiếp theo chúng ta sẽ tìm hiểu về truy vấn con(subquery) trong MySQL.

Chúc các bạn học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây