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

Jak použít klauzuli Haveing ​​with Group by in Select Query - SQL Server / TSQL Tutorial, část 131

Scénář:

Pracujete jako vývojář SQL Serveru, budete požádáni, abyste napsali dotaz, který by měl vrátit Total SaleAmount z tabulky dbo.Customer podle CountryShortName. Budete také požádáni o filtrování záznamů, kde je Total SaleAmount podle CountryShortName větší než 10.


Řešení:

Z výše uvedeného scénáře jste si všimli několika věcí. Nejprve musíme sečíst SaleAmount. Za druhé, musíme seskupit podle SaleAmount podle CountryShortName. Poslední věc, kterou potřebujeme odfiltrovat tyto záznamy po výpočtu součtu a vrátí se pouze tam, kde je celková částka SaleAmount větší než 10. Nemůžeme zde použít klauzuli Where jako where bude filtrovat záznamy před Seskupit podle. SQL Server nám poskytuje klauzuli Having, kterou můžeme použít k filtrování záznamů po skupině podle.
Pojďme vytvořit tabulku dbo.Customer s níže uvedenými záznamy a poté napište náš dotaz pomocí klauzule Group by a Having.

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í Seskupit podle a pak pomocí Having vyfiltrovat záznam, kde Sum(SaleAmount) je větší než 10.
SELECT countryshortname, 
       Sum(saleamount) SaleAmountByCountry 
FROM   dbo.customer 
GROUP  BY countryshortname 
HAVING Sum(saleamount) > 10 
 Jak filtrovat agregovaná data pomocí klauzule Having v SQL 


Video ukázka:Jak používat klauzuli Having v příkazu SQL Select

 



  1. Jak získat počet aktuálního měsíce neděle v psql?

  2. Hekaton se zvratem:TVP v paměti – část 1

  3. Jak nainstalovat a zabezpečit MariaDB na CentOS 8

  4. Záleží na pořadí tabulek ve spojení, když se používají LEVÉ (vnější) spojení?