Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Entender Agrupar por Cláusula no SQL Server - Tutorial SQL Server / TSQL Parte 130

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