Đặt điều kiện truy vấn dữ liệu sau mệnh đề “GROUP BY” trong câu truy vấn SQL cho phép bạn lọc dữ liệu đã nhóm dựa trên các tiêu chí cụ thể. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng điều kiện sau lệnh “GROUP BY” để truy vấn dữ liệu một cách hiệu quả.
Đặt điều kiện truy vấn sau GROUP BY với mệnh đề HAVING
Lệnh GROUP BY được sử dụng để nhóm dữ liệu dựa trên một hoặc nhiều cột trong câu truy vấn SQL. Sau đó, bạn có thể sử dụng HAVING để đặt điều kiện sau lệnh “GROUP BY” để lọc các kết quả nhóm theo tiêu chí cụ thể. Cú pháp của câu truy vấn SQL sẽ như sau:
SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2
HAVING condition;
Trong đó:
column1
,column2
,… là các cột bạn muốn nhóm theo.aggregate_function
là các hàm tổng hợp như COUNT, SUM, AVG, MAX, MIN, v.v. được áp dụng lên cộtcolumn3
(được nhóm).table_name
là tên của bảng chứa dữ liệu cần truy vấn.condition
là điều kiện để lọc các kết quả nhóm.
Dưới đây là một số ví dụ cụ thể:
Ví dụ 1: Trong bảng “Orders“, chúng ta muốn nhóm các đơn hàng theo CustomerID (Tên cột chỉ định) và chỉ hiển thị các nhóm có tổng giá trị đơn hàng lớn hơn 1000.
SELECT CustomerID, SUM(OrderAmount) AS TotalOrderAmount
FROM Orders
GROUP BY CustomerID
HAVING SUM(OrderAmount) > 1000;
Ví dụ 2: Trong bảng “Products“, chúng ta muốn nhóm các sản phẩm theo “Category” và chỉ hiển thị các nhóm có số lượng sản phẩm lớn hơn 50.
>>XEM THÊM: Khoá ngoại – Hướng dẫn liên kết bảng MySQL trong phpmyadmin
SELECT Category, COUNT(*) AS ProductCount
FROM Products
GROUP BY Category
HAVING COUNT(*) > 50;
Ví dụ 3: Trong bảng “Employees“, chúng ta muốn nhóm các nhân viên theo “Department” và chỉ hiển thị các nhóm có mức lương trung bình cao hơn 50000.
SELECT Department, AVG(Salary) AS AverageSalary
FROM Employees
GROUP BY Department
HAVING AVG(Salary) > 50000;
Như vậy, điều kiện sau lệnh “GROUP BY” được xác định bằng cách sử dụng “HAVING” để lọc các kết quả nhóm theo tiêu chí cụ thể. Lưu ý rằng HAVING sử dụng các hàm tổng hợp (aggregate functions) để xác định các điều kiện của mình và bạn có thể sử dụng các toán tử so sánh thông thường như “=”, “>”, “<“, “>=”, “<=”, “<>” để so sánh các giá trị.
Ví dụ 4: Trong bảng “Students“, chúng ta muốn nhóm các học sinh theo “Grade” và chỉ hiển thị các nhóm có tỷ lệ điểm trung bình lớn hơn 8.
SELECT Grade, AVG(Mark) AS AverageMark
FROM Students
GROUP BY Grade
HAVING AVG(Mark) > 8;
Ví dụ 5: Trong bảng “Sales“, chúng ta muốn nhóm các bản ghi theo “ProductID” và chỉ hiển thị các nhóm có số lượng bán hàng lớn hơn 100 và tổng doanh thu cao hơn 5000.
>>XEM THÊM: Các hàm xử lý toán học trong MySQL – Học MySQL
SELECT ProductID, COUNT(*) AS TotalSales, SUM(Revenue) AS TotalRevenue
FROM Sales
GROUP BY ProductID
HAVING COUNT(*) > 100 AND SUM(Revenue) > 5000;
Khi sử dụng lệnh GROUP BY và HAVING, bạn có thể linh hoạt lựa chọn các cột và điều kiện phù hợp với yêu cầu cụ thể của mình. Điều quan trọng là bạn cần hiểu rõ cấu trúc của dữ liệu và các hàm tổng hợp mà bạn muốn sử dụng để truy vấn dữ liệu một cách chính xác và hiệu quả.
Trên đây là một số ví dụ và hướng dẫn cơ bản để đặt điều kiện sau lệnh GROUP BY trong câu truy vấn SQL. Điều này cho phép bạn xử lý và hiển thị dữ liệu đã nhóm một cách tùy chỉnh và tiện lợi. Hãy thực hành nhiều hơn và tìm hiểu thêm về các tính năng khác của SQL để nâng cao khả năng truy vấn và phân tích dữ liệu của bạn.
Cảm ơn bạn đã đọc hết bài viết! CHúc bạn học tốt!
[XEM TẤT CẢ CÁC BÀI HƯỚNG DẪN MYSQL TẠI ĐÂY]
XEM THÊM Hàm Max, Min trong MySQL – Tìm kiếm lớn nhất, bé nhất trong cột Hàm SUM trong MYSQL – Tính tổng một cột (Hiểu trong 5 phút) Câu lệnh CREATE TABLE trong MySQL – Lệnh tạo bảng mới Các kiểu dữ liệu trong MySQL (Data Types) – Học MySQL Câu lệnh SELECT trong MySQL – Khi nào thì dùng lệnh SELECT Toán tử so sánh trong MySQL – So sánh bằng, lớn hơn, nhỏ hơn