Blog

SO SÁNH MỆNH ĐỀ WHERE VÀ HAVING TRONG SQL

Trong ngôn ngữ truy vấn SQL, mệnh đề WHERE và HAVING được sử dụng rất nhiều. Tuy nhiên, vẫn có rất nhiều học viên bị nhầm lẫn và gặp khó khăn trong khi sử dụng 2 mệnh đề này. Bài viết dưới đây INDA Academy sẽ so sánh mệnh đề WHERE và HAVING trong SQL để giúp học viên hiểu rõ hơn về sự khác nhau cũng như cách sử dụng giữa hai mệnh đề này.

Mệnh đề WHERE trong SQL

  • Mệnh đề WHERE dùng để kiểm tra các điều kiện cho các thuộc tính của bảng, trả kết quả đối chiếu với từng dòng.
Mệnh đề WHERE và HAVING trong SQL
Mệnh đề WHERE trong SQL
  • Cú pháp:
1234Selectcolumn_listsFromtable_nameWHEREconditionsGroupbycolumn_lists
  • Ví dụ: Bảng khach_hang
CustomerIDGenderCitySalesAmount
1NamHà Nội200.000
2NamHồ Chí Minh315.000
3NữHà Nội160.000
4NữHà Nội120.000
5NamHồ Chí Minh125.000
6NữĐà Nẵng185.000
7NamĐà Nẵng316.000
8NữHải Phòng295.000

Khi thực hiện truy vấn:

1234567SelectCustomerID, Gender, City, SalesAmountFromkhach_hangWHERESalesAmount > 200000GroupbyCustomerID, Gender, City

Ta được kết quả sau:

CustomerIDGenderCitySalesAmount
1NamHà Nội200.000
2NamHồ Chí Minh315.000
7NamĐà Nẵng316.000
8NữHải Phòng295.000

Mệnh đề HAVING

  • Mệnh đề HAVING được dùng để giới hạn nhóm các hàng trả về trong bảng, trả kết quả đối chiếu cho các nhóm (Sum, Count, Average,…) được tạo bởi Group by.
  • Mệnh đề WHERE và HAVING trong SQL khác nhau ở chỗ mệnh đề HAVING được thêm vào SQL vì mệnh đề WHERE không thể sử dụng được với các aggregate functions.
  • Có thể sử dụng mệnh đề WHERE và HAVING cùng nhau trong quá trình lựa chọn. Trong trường hợp này, đầu tiên mệnh đề WHERE lọc các hàng riêng lẻ, sau đó các hàng được nhóm lại, thực hiện các phép tính tổng hợp và cuối cùng mệnh đề HAVING lọc các nhóm.
Mệnh đề WHERE và HAVING trong SQL
Mệnh đề HAVING có thể được thêm vào SQL
  • Symtax:
1234567891011Selectcolumn_lists, aggregate_function (expression)Fromtable_nameWHEREconditionsGroupbycolumn_listsHAVINGconditions
  • Ví dụ: Tiếp tục lấy Bảng khach_hang ở trên
CustomerIDGenderCitySalesAmount
1NamHà Nội200.000
2NamHồ Chí Minh315.000
3NữHà Nội160.000
4NữHà Nội120.000
5NamHồ Chí Minh125.000
6NữĐà Nẵng185.000
7NamĐà Nẵng316.000
8NữHải Phòng295.000

Khi thực hiện truy vấn:

1234567SelectCity, Sum(SalesAmount) asTotal_SalesFromkhach_hangGroupbyCityHAVINGSum(SalesAmount) > 450000

Ta được kết quả sau:

CityTotal_Sales
Hà Nội480.000
Đà Nẵng501.000

Phân biệt mệnh đề WHERE và HAVING trong SQL

Nội dungWHEREHAVING
Cách thức FilterTừng dòng riêng lẻTừng nhóm
Dùng với aggregate functionsKhông
Dùng với các câu lệnhSelect, Update, DeleteChỉ dùng với Select
Dùng với Group byDùng trước Group byDùng sau Group by

Kết luận

Trong bài viết trên, INDA Academy đã so sánh sự khác nhau giữa hai mệnh đề WHERE và HAVING trong SQL. Cả 2 mệnh đề này đều có chức năng lọc dữ liệu, tuy nhiên vẫn có một số điểm khác biệt ở cách thức lọc, kết hợp với các câu lệnh khác. Nhìn chung mệnh đề HAVING được trang bị thêm một số tính năng mà mệnh đề WHERE không có.

Chúng tôi chuyên cung cấp những khoá học về Phân tích dữ liệu, đăng ký ngay để nhận được tư vấn chi tiết khoá học dành riêng cho bạn nhé!

KHOÁ HỌC TRUY VẤN VÀ THAO TÁC DỮ LIỆU SQL TỪ CƠ BẢN ĐẾN NÂNG CAO

KHÓA HỌC DATA WAREHOUSE : TỔNG HỢP, CHUẨN HÓA VÀ XÂY DỰNG KHO DỮ LIỆU TRONG DOANH NGHIỆP

KHÓA HỌC DATA MODEL – THIẾT KẾ MÔ HÌNH DỮ LIỆU TRONG DOANH NGHIỆP

LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU

DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT

Nguồn: Internet

    LIÊN HỆ VỚI CHÚNG TÔI ĐỂ NHẬN ĐƯỢC TƯ VẤN MIỄN PHÍ
    Xin vui lòng điền vào form dưới đây. Chúng tôi sẽ liên hệ lại ngay cho bạn khi nhận được thông tin:






    Leave a Reply

    Your email address will not be published. Required fields are marked *