sql >> Database >  >> RDS >> Sqlserver

Hoe een Clausule met Groeperen door in Select Query toe te passen - SQL Server / TSQL Tutorial Part 131

Scenario:

U werkt als SQL Server-ontwikkelaar, u wordt gevraagd een query te schrijven die Total SaleAmount uit de tabel dbo.Customer per CountryShortName moet retourneren. U wordt ook gevraagd om de records te filteren waarbij Total SaleAmount op CountryShortName groter is dan 10.


Oplossing:

Uit het bovenstaande scenario heb je een aantal dingen opgemerkt. Eerst moeten we het SaleAmount optellen. Ten tweede moeten we groeperen op SaleAmount op CountryShortName. Het laatste wat we nodig hebben om die records te filteren na het berekenen van de som en retourneert alleen waar het totale SaleAmount groter is dan 10. We kunnen de Where-clausule hier niet gebruiken, omdat de records vóór Group by worden gefilterd. SQL Server voorziet ons van de Having-clausule die we kunnen gebruiken om de records na group by te filteren.
Laten we een dbo.Customer-tabel maken met onderstaande records en dan onze query schrijven met behulp van Group by en Having-clausule.

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 query schrijven door Groeperen op te gebruiken en vervolgens het record moeten filteren waarbij Sum(SaleAmount) groter is dan 10.
SELECT countryshortname, 
       Sum(saleamount) SaleAmountByCountry 
FROM   dbo.customer 
GROUP  BY countryshortname 
HAVING Sum(saleamount) > 10 
 Geaggregeerde gegevens filteren met behulp van de Having-clausule in SQL 


Videodemo:Hoe gebruik je een clausule in SQL Select-instructie

 



  1. bij het invoegen van een Perzisch teken in oracle db zie ik het vraagteken

  2. Selecteer alleen de tijdstempels van vandaag (sinds middernacht)

  3. Zorg voor PL/SQL-uitvoer in realtime

  4. PASS Summit 2013 :Een succes in Charlotte