Giới thiệu về SQL HAVING
SQL HAVING là một mệnh đề trong ngôn ngữ lập trình SQL, được sử dụng để lọc kết quả của các nhóm dữ liệu được tạo ra bởi mệnh đề GROUP BY. Mệnh đề HAVING cho phép bạn áp dụng các điều kiện trên các nhóm dữ liệu, tương tự như mệnh đề WHERE áp dụng cho từng hàng trong bảng.
Định nghĩa
Mệnh đề HAVING thường được sử dụng khi bạn muốn thực hiện các phép tính tổng hợp (aggregate functions) như COUNT, SUM, AVG, MIN, MAX và sau đó lọc các nhóm dữ liệu dựa trên kết quả của các phép tính này.
Cú pháp
SELECT column1, column2, aggregate_function(column3) FROM table_name WHERE condition GROUP BY column1, column2 HAVING condition;
Ví dụ sử dụng SQL HAVING
Ví dụ 1: Lấy danh sách các phòng ban có số nhân viên lớn hơn 10
SELECT department, COUNT(employee_id) AS employee_count FROM employees GROUP BY department HAVING COUNT(employee_id) > 10;
Trong ví dụ này, chúng ta đang đếm số lượng nhân viên của mỗi phòng ban và sử dụng HAVING để lọc chỉ những phòng ban có số nhân viên lớn hơn 10.
Ví dụ 2: Tính tổng doanh thu của mỗi sản phẩm và lọc ra những sản phẩm có doanh thu lớn hơn 1000
SELECT product_id, SUM(sales) AS total_sales FROM sales_data GROUP BY product_id HAVING SUM(sales) > 1000;
Ví dụ này tính tổng doanh thu cho mỗi sản phẩm và chỉ giữ lại những sản phẩm có tổng doanh thu lớn hơn 1000.
Ví dụ 3: Kết hợp WITH và HAVING
WITH department_sales AS ( SELECT department, SUM(sales) AS total_sales FROM sales_data GROUP BY department ) SELECT department FROM department_sales HAVING total_sales > 5000;
Ở đây, chúng ta sử dụng CTE (Common Table Expressions) để tạo một bảng tạm thời với thông tin doanh thu của các phòng ban và sau đó sử dụng mệnh đề HAVING để lấy ra những phòng ban có tổng doanh thu lớn hơn 5000.
Kết luận
Mệnh đề HAVING là một công cụ mạnh mẽ trong SQL giúp bạn có thể lọc dữ liệu theo các điều kiện tổng hợp, cho phép bạn làm việc với các kết quả tốt hơn và dễ dàng hơn. Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về cách sử dụng HAVING trong SQL.