HA Klausul i SQL-aggregatfunktioner

I den här handledningen kommer vi att diskutera några sätt på vilka vi kan använda eller exekvera HAVING-satsen i SQL-aggregatfunktioner . Att använda den här klausulen i SQL-aggregatfunktioner kan i hög grad hjälpa till vid datasammanfattning.

HAVING -sats liknar nästan WHERE -satsen och kan också köras tillsammans med den.

Vi kommer att diskutera deras samband och skillnader genom att ge exempel när vi går igenom den här handledningen.

Innehållsförteckning

GROUP BY And WHERE-satser i SQL

För vårt första exempel kommer vi att diskutera hur man kör och använder exempeltabellen nedan. Observera att vi bara kan använda WHERE- satsen med befintliga kolumner och inte enbart i aggregerade funktioner.

HA Klausul i SQL-aggregatfunktioner

Låt oss säga att vi vill få en produkts totala försäljning baserat på kolumnen SaleAmount där värdet är större än 2 . För att få resultatet bör vårt kommando vara följande:

HA Klausul i SQL-aggregatfunktioner

Först väljer vi Produktnamnet och aggregerar SaleAmount för att få TotalSales. 

HA Klausul i SQL-aggregatfunktioner

Sedan använde vi WHERE- satsen här eftersom vi bara försöker få fram produkter där SaleAmount är större än 2. Kommandot 'GROUP BY ProductName' indikerar att det kommer att gruppera rader under kolumnen ProductName till en.

Genom att utföra vår uppsättning kommandon ser vi att av all data under kolumnerna ProductName och SaleAmount , visades bara Bulb och Fan . Det beror på att de var de enda som hade ett försäljningsbelopp som är större än 2.

HA Klausul i SQL-aggregatfunktioner

I det här exemplet är WHERE- satsen för att filtrera resultat med en befintlig kolumn, vilket är vårt SaleAmount . Observera också att WHERE -satsen visas före GROUP BY och inte kan användas för att filtrera aggregerade funktioner. Å andra sidan visas HAVING -satsen efter GROUP BY och används för filtrering baserat på en aggregerad funktion. 

GROUP BY Och HAVING Klausul i SQL

I det här exemplet kommer vi att visa skillnaden mellan WHERE- satsen och HAVING -satsen. Vi kommer att använda samma mål som vi har i föregående exempel så att vi kan jämföra och utvärdera resultaten. 

Låt oss först visa produkter med deras totala försäljning med hjälp av kommandot nedan. Som du kan se är vårt första kommando fortfarande detsamma som vårt första kommando som kör WHERE -satsen.

HA Klausul i SQL-aggregatfunktioner

Om vi ​​ska köra våra första två kommandon får vi följande resultat:

HA Klausul i SQL-aggregatfunktioner

Låt oss nu säga att vi bara vill visa produkter vars totala försäljning är mer än 5. Vi kan inte använda WHERE-  satsen eftersom den bara kan användas med befintliga kolumner. Därför måste vi använda HAVING- satsen eftersom vi kommer att filtrera från en aggregerad funktion. 

HA Klausul i SQL-aggregatfunktioner

Lägg märke till hur vi använder HAVING- satsen efter GROUP BY till skillnad från WHERE -satsen som används före GROUP BY. Detta beror på att SQL kommer att gruppera poster innan den utvärderar HAVING -satsen. 

Låt oss sedan köra dessa kommandon tillsammans med HAVING SUM(SaleAmount)>5 . Efter att ha specificerat att vi bara vill få de produkter vars totala pris är högre än 5, kommer vi att märka att i vår nuvarande resultattabell kommer vi inte att se pennan längre . Det beror på att den totala summan är mindre än 5

HA Klausul i SQL-aggregatfunktioner

Kort sagt, när vi vill filtrera data från vår tabell baserat på en befintlig kolumn använder vi WHERE-satsen , medan när vi vill filtrera data från en aggregerad funktion använder vi HAVING-satsen

HAVING And WHERE-klausul i SQL Server Management Studio (SSMS)

Nu ska vi gå vidare genom att diskutera och demonstrera hur vi kan exekvera HAVING-satsen i (SSMS). Vi kommer också att ta itu med skillnaden mellan HAVING-satsen och WHERE-satsen genom att ge exempel.

Nedan visas vårt exempel på SalesOrderHeader. Denna data består av 100 rader. För vårt exempel vill vi TotalSale efter kund-ID där TotalSale är större än 10 000 . Observera att den totala försäljningen baseras på summan av värdena i kolumnen TotalDue .

HA Klausul i SQL-aggregatfunktioner

Låt mig först visa varför vi inte kan använda WHERE-satsen när vi vill filtrera på en aggregerad funktion baserat på vårt exempel ovan. 

Vi kommer att använda exempeluppsättningen av kommandon från bilden nedan. Som du kan se har vi tekniskt sett samma uppsättning kommandon som den vi har från vårt allra första exempel.

Men när vi klickar på Execute i det övre vänstra hörnet kommer det att resultera i ett fel eftersom vi inte kan använda WHERE- satsen ensam när vi filtrerar på aggregatfunktionen.

HA Klausul i SQL-aggregatfunktioner

För att rätta till felet måste vi filtrera resultatet med HAVING -satsen istället för WHERE -satsen. Vår nya uppsättning kommandon bör likna bilden nedan.

HA Klausul i SQL-aggregatfunktioner

Nu kan vi se att vårt fel har rättats och innehåller resultaten prmed en totalförsäljning större än 10 000 .

Återigen, WHERE-satsen används alltid före GROUP BY-satsen , medan HAVING-satsen alltid används efter en GROUP BY-sats .

Använder både HAVING-klausul och WHERE-klausul i SQL  

För det här exemplet, låt oss säga att vi vill använda WHERE och HAVING-satsen samtidigt. Låt oss försöka få TotalSale efter kund-ID där TotalSale är större än 10 000 men bara med kunder där deras territorium-ID är lika med 1

Eftersom vi vill filtrera resultat med kunder som har 1 som territorium-ID kommer vi att använda WHERE-satsen. Så vårt kommando bör vara detsamma som vårt tidigare. Återigen, vi har lagt till en WHERE-sats före GROUP BY-satsen.

HA Klausul i SQL-aggregatfunktioner

För närvarande kan vi inte se stor skillnad mellan vårt tidigare resultat och det här nya. Men om du tittar noga på det nedre högra hörnet har vi nu bara 64 rader jämfört med den föregående med 505 rader med data. Det beror på att resultaten också filtreras utifrån deras territorium-ID .

Slutsats

För att sammanfatta kan vi bara använda WHERE -satsen med befintliga kolumner. Om vi ​​behöver filtrera med aggregerade funktioner måste vi istället använda HAVING -satsen.

Att använda HAVING -satsen i SQL-aggregatfunktioner och öva på sätt att exekvera HAVING- satsen och WHERE -satsen tillsammans kan ge användarna bekvämlighet när de arbetar med ett stort antal data eller poster. 

Jag hoppas att jag har försett dig med tillräckligt med information och förståelse för hur man använder HAVING -satsen i SQL-aggregatfunktioner. Om du vill veta mer om det här ämnet och annat relaterat innehåll kan du absolut kolla in listan med relevanta länkar nedan.

Med vänliga hälsningar,

Hafiz


LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.

Extrahera LuckyTemplates-teman och bilder från PBIX

Extrahera LuckyTemplates-teman och bilder från PBIX

Lär dig hur du tar isär en PBIX-fil för att extrahera LuckyTemplates-teman och bilder från bakgrunden och använda den för att skapa din rapport!

Excel Formler Fuskblad: Mellanvägledning

Excel Formler Fuskblad: Mellanvägledning

Excel Formler Fuskblad: Mellanvägledning

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

LuckyTemplates Kalendertabell: Vad är det och hur man använder det