Scenario:
Je werkt als SQL Server Developer. U hebt een dbo.Customer-tabel met CountryShortName en SaleAmount. U wordt gevraagd een query te schrijven die Sum of SaleAmount , count of records by CountryShortName moet retourneren.
Oplossing:
Groeperen op clausule wordt vaak gebruikt met geaggregeerde functies zoals Sum, Avg, Count, Max, Min om het resultaat te groeperen op kolom/s.Laten we onze voorbeeldtabel maken met wat gegevens en onze query schrijven met Group by to beantwoord onze vraag.
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)
Laten we onze vraag schrijven met behulp van Sum, Count en Group by Clause
SELECT Sum(saleamount) AS TotalSaleByCountry, Count(*) AS RecordCountByCountry, countryshortname FROM dbo.customer GROUP BY countryshortname
Groep op clausule gebruiken in SQL Server
U kunt ook meerdere kolommen in groep per clausule gebruiken. denk erover na of onze tabel staten zou hebben en u zou willen groeperen op CountryShortName en State. U zou eenvoudig State in de query kunnen opnemen, zoals hieronder weergegeven.
SELECT Sum(saleamount) AS TotalSaleByCountry, Count(*) AS RecordCountByCountry, countryshortname,
[State] FROM dbo.customer GROUP BY countryshortname,[State]
Video Demo: What is Group by Clause in SQL Server