Scénario :
Vous travaillez en tant que Développeur SQL Server. Vous avez une table dbo.Customer qui contient CountryShortName et SaleAmount. Vous êtes invité à écrire une requête qui doit renvoyer Sum of SaleAmount , nombre d'enregistrements par CountryShortName.
Solution :
La clause Group by est souvent utilisée avec des fonctions d'agrégation telles que Sum, Avg, Count, Max, Min pour regrouper le jeu de résultats par colonne/s.Créons notre exemple de table avec quelques données et écrivons notre requête avec Group by pour répondez à notre question.
Créez la table dbo.Customer (Id int, FName VARCHAR(50), LName VARCHAR(50), CountryShortName CHAR(2), SaleAmount Int)GO--Insert Rows in dbo.Customer Insertion de table dans 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', 'Jean','US',87),(6,'Jean',Null,'US',Null)
Écrivons notre requête en utilisant Sum, Count et Group by ClauseSELECT Sum(saleamount) AS TotalSaleByCountry, Count(*) AS RecordCountByCountry, countryshortname FROM dbo.customer GROUP BY countryshortnameComment utiliser Group by Clause dans SQL Server
Vous pouvez également utiliser plusieurs colonnes dans la clause group by. réfléchissez si notre table aurait des états et que vous voudriez regrouper par CountryShortName et State, vous incluriez simplement State dans la requête comme indiqué ci-dessous.SELECT Sum(saleamount) AS TotalSaleByCountry, Count (*) AS RecordCountByCountry, countryshortname,[State]FROM dbo.customer GROUP BY countryshortname,[State]Démonstration vidéo :qu'est-ce que Grouper par clause dans SQL Server