sql >> Database >  >> RDS >> Sqlserver

Begrijp groep per clausule in SQL Server - SQL Server / TSQL-zelfstudie, deel 130

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
 

  1. Tabelnaam doorgeven als parameter in psycopg2

  2. Vermijd duplicaten in INSERT INTO SELECT-query in SQL Server

  3. Som over waarden per maand in milliseconden

  4. Geoptimaliseerde SQL voor boomstructuren