Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách áp dụng Mệnh đề Có với Nhóm bằng trong Truy vấn Chọn - Hướng dẫn SQL Server / TSQL Phần 131

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) > 10 
  Cá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

 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi Chế độ nghi ngờ cơ sở dữ liệu SQL thành Chế độ bình thường với truy vấn

  2. Sự khác biệt giữa kết nối trái và tham gia phải trong SQL Server

  3. Các truy vấn ANSI JOIN và không phải ANSI JOIN có thực hiện khác nhau không?

  4. Gọi thủ tục được lưu trữ với giá trị trả về

  5. 4 cách để tìm hiểu những cột nào sẽ được trả về bởi một thủ tục được lưu trữ trong SQL Server