Scénář:
Pracujete jako SQL Server Developer. Máte tabulku dbo.Customer, která obsahuje CountryShortName a SaleAmount. Budete požádáni, abyste napsali dotaz, který by měl vrátit Sum of SaleAmount , počet záznamů podle CountryShortName.
Řešení:
Seskupit podle klauzule se často používá s agregačními funkcemi, jako je Sum, Avg,Count,Max,Min k seskupení sady výsledků podle sloupců/s.Vytvořme naši ukázkovou tabulku s některými daty a napište náš dotaz pomocí Seskupit podle do odpovězte na naši otázku.
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)
Napišme náš dotaz pomocí Sum, Count a Group by Claus
SELECT Sum(saleamount) AS TotalSaleByCountry, Count(*) AS RecordCountByCountry, countryshortname FROM dbo.customer GROUP BY countryshortname
Jak používat skupinu podle klauzule na serveru SQL Server
Můžete také použít více sloupců ve skupině po klauzuli. přemýšlejte o tom, zda by naše tabulka měla stavy a chtěli byste seskupit podle CountryShortName a State, jednoduše byste do dotazu zahrnuli State, jak je uvedeno níže.
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