Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment appliquer la clause Have avec Group by dans Select Query - Tutoriel SQL Server / TSQL Partie 131

Scénario :

Vous travaillez en tant que développeur SQL Server, vous êtes invité à écrire une requête qui doit renvoyer Total SaleAmount de la table dbo.Customer par CountryShortName. Vous êtes également invité à filtrer les enregistrements où Total SaleAmount by CountryShortName est supérieur à 10.


Solution :

Dans le scénario ci-dessus, vous avez remarqué quelques choses. Nous devons d'abord additionner le SaleAmount. Deuxièmement, nous devons regrouper par SaleAmount par CountryShortName. La dernière chose dont nous avons besoin pour filtrer ces enregistrements après avoir calculé la somme et ne revient que lorsque le montant total de SaleAmount est supérieur à 10. Nous ne pouvons pas utiliser la clause Where ici car where filtrera les enregistrements avant Group by. SQL Server nous fournit la clause Have que nous pouvons utiliser pour filtrer les enregistrements après le groupe par.
Créons dbo.Customer Table avec les enregistrements ci-dessous, puis écrivons notre requête en utilisant Group by et la clause Have.

Créer la table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), SaleAmount Int)GO--Insert Rows in dbo.Customer Tableinsert into dbo.CustomerValues ​​( 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)
 
 
 Écrivons notre requête en utilisant Grouper par, puis en utilisant Ayant pour filtrer l'enregistrement où Sum(SaleAmount) est supérieur à 10.
SELECT countryshortname, Sum(saleamount) SaleAmountByCountry FROM dbo.customer GROUP BY countryshortname HAVING Sum (montant de la vente)> 10 
 Comment filtrer les données agrégées à l'aide de la clause Have dans SQL 


Démo vidéo :Comment utiliser la clause Have dans l'instruction SQL Select