Cenário:
Você está trabalhando como SQL Server Developer. Você tem uma tabela dbo.Customer que tem CountryShortName e SaleAmount. Você é solicitado a escrever uma consulta que deve retornar Sum of SaleAmount , contagem de registros por CountryShortName.
Solução:
A cláusula Group by é frequentemente usada com funções agregadas como Sum, Avg,Count,Max,Min para agrupar o resultado definido por coluna/s.Vamos criar nossa tabela de amostra com alguns dados e escrever nossa consulta com Group by to responda nossa pergunta.
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)
Vamos escrever nossa consulta usando Sum, Count e Group by Clause
SELECT Sum(saleamount) AS TotalSaleByCountry, Count(*) AS RecordCountByCountry, countryshortname FROM dbo.customer GROUP BY countryshortname
Como usar Group by Clause no SQL Server
Você também pode usar várias colunas na cláusula group by. pense se nossa tabela teria estados e você gostaria de agrupar por CountryShortName e State, você simplesmente incluiria State na consulta, conforme mostrado abaixo.
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