Tình huống:
Bạn đang làm việc với tư cách là nhà phát triển SQL Server, bạn được yêu cầu viết một truy vấn sẽ trả về Total SaleAmount từ bảng dbo.Customer của CountryShortName. Bạn cũng được yêu cầu lọc các bản ghi trong đó Total SaleAmount theo CountryShortName lớn hơn 10.Giải pháp:
Từ kịch bản trên, bạn đã nhận thấy một số điều. Trước tiên, chúng ta cần tính tổng số tiền bán hàng. Thứ hai, chúng ta cần nhóm theo SaleAmount bởi CountryShortName. Điều cuối cùng chúng ta cần lọc các bản ghi đó sau khi tính tổng và chỉ trả về khi tổng số SaleAmount lớn hơn 10. Chúng ta không thể sử dụng mệnh đề Where ở đây vì where sẽ lọc các bản ghi trước khi Group by. SQL Server cung cấp cho chúng tôi mệnh đề Có mà chúng tôi có thể sử dụng để lọc các bản ghi sau khi nhóm theo.Hãy tạo Bảng dbo.Customer với các bản ghi bên dưới và sau đó viết truy vấn của chúng tôi bằng cách sử dụng mệnh đề Nhóm theo và Có.
Create table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), SaleAmount Int) GO --Insert Rows in dbo.Customer Table insert into dbo.Customer Values ( 1,'Raza','M','PK',10), (2,'Rita','John','US',12), (3,'Sukhi','Singh',Null,25), (4,'James','Smith','CA',60), (5,'Robert','Ladson','US',54), (6,'Alice','John','US',87), (6,'John',Null,'US',Null)Hãy viết truy vấn của chúng ta bằng cách sử dụng Nhóm theo và sau đó sử dụng Có để lọc bản ghi có Tổng (SaleAmount) lớn hơn 10.
SELECT countryshortname, Sum(saleamount) SaleAmountByCountry FROM dbo.customer GROUP BY countryshortname HAVING Sum(saleamount) > 10Cách lọc dữ liệu tổng hợp bằng cách sử dụng mệnh đề Có trong SQL
Video Demo:Cách sử dụng Mệnh đề Có trong Câu lệnh Chọn SQL