sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan anvender du at have klausul med Group by i Select Query - SQL Server / TSQL Tutorial Part 131

Scenarie:

Du arbejder som SQL Server-udvikler, du bliver bedt om at skrive en forespørgsel, der skal returnere Total SaleAmount fra dbo.Customer-tabel efter CountryShortName. Du bliver også bedt om at filtrere de poster, hvor Total SaleAmount efter CountryShortName er større end 10.


Løsning:

Fra ovenstående scenarie har du bemærket et par ting. Først skal vi summere SaleAmount. For det andet skal vi gruppere efter SaleAmount efter CountryShortName. Det sidste, vi skal filtrere disse poster efter at have beregnet summen og returnerer kun, hvor det samlede SaleAmount er større end 10. Vi kan ikke bruge Where-klausulen her, da hvor vil filtrere posterne før Group by. SQL Server giver os Having-klausul, som vi kan bruge til at filtrere posterne efter gruppe efter.
Lad os oprette dbo.Customer-tabel med nedenstående poster og derefter skrive vores forespørgsel ved at bruge Group by og Have-klausul.

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)
 
 
 Lad os skrive vores forespørgsel ved at bruge Group by og derefter bruge Have to filtrere posten, hvor Sum(SaleAmount) er større end 10.
SELECT countryshortname, 
       Sum(saleamount) SaleAmountByCountry 
FROM   dbo.customer 
GROUP  BY countryshortname 
HAVING Sum(saleamount) > 10 
 Sådan filtreres aggregerede data ved at bruge Having-sætning i SQL 


Videodemo :Sådan bruger du at have klausul i SQL Select Statement

 



  1. Sådan fungerer INTERSECT i PostgreSQL

  2. Sådan fungerer TRIM() i MariaDB

  3. Sådan får du værdier, der ikke indeholder tal i SQL Server

  4. Hvordan kan jeg få kolonnenavne fra en tabel i SQL Server?