sql >> Databáze >  >> RDS >> Sqlserver

Pochopte skupinu podle klauzule v SQL Server - SQL Server / TSQL výukový program, část 130

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
 

  1. Odstraňování problémů:Chyba MySQL/MariaDB #1044 Е Přístup odepřen uživateli

  2. Poslechněte si Microsoft Access Podcast Episode 1

  3. Aktualizované možnosti úrovně databáze SQL Azure

  4. Nesprávná syntaxe poblíž klíčového slova 'with'...předchozí příkaz musí být ukončen středníkem